递归和循环优缺点比较 递归程序有什么优缺点

递归好处:代码更简洁清晰。一般来说,一个人可能很容易的写出前中后序的二叉树遍历的递归算法,要写出相应的非递归算法就比较考验水平了,恐怕至少一半的人搞不定。所以说递归代码更简洁明了。

递归坏处:由于递归需要系统堆栈,所以空间消耗要比非递归代码要大很多。而且,如果递归深度太大,可能系统撑不住。
一般尾递归(即最后一句话进行递归)和单向递归(函数中只有一个递归调用地方)都可以用循环来避免递归,更复杂的情况则要引入栈来进行压栈出栈来改造成非递归,这个栈不一定要严格引入栈数据结构,只需要有这样的思路,用数组什么的就可以。
循环方法比递归方法快, 因为循环避免了一系列函数调用和返回中所涉及到的参数传递和返回值的额外开销。
递归和循环之间的选择。一般情况下, 当循环方法比较容易找到时, 你应该避免使用递归。这在问题可以按照一个递推关系式来描述时,是时常遇到的, 比如阶乘问题就是这种情况。 反过来, 当很难建立一个循环方法时, 递归就是很好的方法。实际上, 在某些情形下,递归方法总是显而易见的, 而循环方法却相当难找到。当某些问题的底层数据结构本身就是递归时, 则递归也就是最好的方法了。

递归算法与迭代算法的设计思路区别在于:函数或算法是否具备收敛性,当且仅当一个算法存在预期的收敛效果时,采用递归算法才是可行的,否则,就不能使用递归算法。
当然,从理论上说,所有的递归函数都可以转换为迭代函数,反之亦然,然而代价通常都是比较高的。
但从算法结构来说,递归声明的结构并不总能够转换为迭代结构,原因在于结构的引申本身属于递归的概念,用迭代的方法在设计初期根本无法实现,这就像动多态的东西并不总是可以用静多态的方法实现一样。这也是为什么在结构设计时,通常采用递归的方式而不是采用迭代的方式的原因,一个极典型的例子类似于链表,使用递归定义及其简单,但对于内存定义(数组方式)其定义及调用处理说明就变得很晦涩,尤其是在遇到环链、图、网格等问题时,使用迭代方式从描述到实现上都变得很不现实。

  

爱华网本文地址 » http://www.aihuau.com/a/25101018/374106.html

更多阅读

将才和帅才有什么区别? 将才帅才区别

将才和帅才有什么区别?一句简单的古语是这样说的:“能领兵者,谓之将也”;“能将将者,谓之帅也”。帅才与将才的提法沿用于久远的战争历史,因而比较习惯和通俗化。帅才比将才高一个层次,偏重于战略思维,其学识和涵养能把自己提高到应有的空间

天猫和淘宝有什么区别 天猫旗舰店都是正品吗

天猫和淘宝有什么区别——简介 现在,越来越多的人喜欢网上购物,因为这毕竟比较方便、比较容易可行..网购的网站有很多,比如当当网、京东网、拍拍网、淘宝网之类,但目前大多数人还是喜欢在淘宝网上买东西,比较保险一些。 但这时疑问就来

狗肉不能和什么一起吃,吃狗肉有什么禁忌 狗肉饮食禁忌

狗肉咸,温,入脾、胃、肾经,有补中益气,温肾助阳的功效。狗肉的营养丰富,蛋白质含量高,而且蛋白质质量极佳。食用狗肉可增强人的体魄,提高消化能力,促进血液循环,改善性功能。但是食用狗肉是有着禁忌的,下面我们就来看看狗肉不能和什么一起吃。

声明:《递归和循环优缺点比较 递归程序有什么优缺点》为网友农村范分享!如侵犯到您的合法权益请联系我们删除