记一次递归调用问题

   这几天服务器因为一个递归调用导致堆栈溢出,down掉几次!

   个人觉得递归调用有时候会存在着隐性的隐患,程序不一定适应所有的数据集,当某个数据集不满足递归结束条件时便容易出现死循环,你不可能枚举所有数据进行测试,这也是我不太钟情于递归的原因。

   但是某些情景下你不得不去使用递归,例如在一个文件夹中查找文件,在这个文件夹中有N多个文件夹和文件,这个时候你不知道有多少层文件夹和文件的情况下。

   当然递归也存在一定的优点,它让代码更加简洁,缺点就是当递归次数较大时,系统开销也增加。在系统中能用while和for代替的,尽量不要使用递归,我想在不得不使用递归的时候,需要从下面几个方面去避免存在的死循环。

  1.代码审查,确认退出递归的出口条件能够实现

  2.虽然不知道递归调用的次数,但是可以增加一个上限递归次数与递归结合使用,通常需要与具体的业务结合在一起,譬如递归员工的上级,以某个上限N去限定这个深度,超过这个深度就退出递归,通常这点随需求的变化而变化,敏捷度不高。

总结:能把递归转化为循环的,尽量使用循环实现,实在转不了,结合具体业务分析。

转载于:https://my.oschina.net/tuzibuluo/blog/185540

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值