解读递归和迭代的区别(实例说明)
发布日期:2021-06-29 13:14:15 浏览次数:2 分类:技术文章

本文共 847 字,大约阅读时间需要 2 分钟。

话不多说,我们先用偏官方的语言来讲解一下什么是递归和迭代

方法调用自身称为递归;利用变量的原值退出新值称之为迭代。

那么各自都有什么优缺点呢?

 

递归

  • 优点:大问题转换为小问题,可以减少代码量,同时在代码精简的基础上,造成可读性好。
  • 缺点:递归调用浪费了空间,而且递归太深的时候容易造成堆栈溢出。

 

迭代

  • 优点:代码运行效率好,因为时间只是与循环次数呈一个线性关系,而且没有额外的空间开销;也就是空间复杂度降低。
  • 缺点:代码相交递归来说,不够简洁,可读性较差。

 

时间项目经验总结两者的取舍问题:

那么实际的开发过程中,我们如何取舍呢?对于笔者的项目经验中,几乎是使用递归来完成业务需求的,很多的层级树、功能点树都是使用递归的,原因在于什么呢?就是因为他思路更清晰,虽然说可能需要写两个方法之类的,但是在传统的web项目中,少不了有新人、或者团队协作中其他开发者接触到每个人的代码,那么对于自己的代码,不仅要算法效率高,还要考虑一个可读性,对于可读性,我个人觉得是必须存在的,项目的一个交接,一个赏心悦目,都得考虑,所以我们在平时写一个算法的时候,必须考虑到代码的可读性,不能太多的玩“骚操作”,不然这无疑是对接触你代码的人的一个巨大考验。而且不仅对于其他人,可能自己而言,这套逻辑,半个月没接触了,然后注释可能写的不是很直观,那么你需要对这段code进行一个修改,更新。自己捡起来也是很困难的。所以关于上面两者的取舍,我认为优先考虑可读性。

那么我们考虑到了可读性,那么也得对其的弊端进行一个解决方案。递归是一个很容易造成溢出的算法,所以在笔者的实际开发中都会对递归的层次设定一个最大值,那么这个最大值是容许范围内的,那么说,对于一个业务需求来说,可能这段代码,这个递归所解决的需求,我作为实现开发人员,我很清楚的知道它是有一个最大值的,且在这个递归最大深度值里面,是可以保证完成递归需要的,所以说,如果递归达到这个最大值的时候,那么递归就必须返回,即使没有完成(如果没有完成,那就是异常情况了)。

 

 

 

转载地址:https://changemax.blog.csdn.net/article/details/102636399 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:局部变量与成员变量的对比区别(从各个角度对比)
下一篇:类初始化过程和实例初始化过程

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月05日 10时59分48秒