循环与递归
2009-06-04 11:04
176 查看
优缺点: 循环效率更高,递归容易理解 是大家普遍的观点。尽管两种想法在时间复杂度和空间复杂度上是等价的。但递归的有一个弱势:函数调用开销如参数传递和堆栈之类的开销,会导致在层次过深的时候,系统崩溃。递归是用栈机制实现的(c++),每深入一层,都要占去一块栈数据区域,对嵌套层数深的一些算法,递归会力不从心,空间上会以内存崩溃而告终,而且递归也带来了大量的函数调用,这也有许多额外的时间开销。所以在深度大时,它的时空性就不好了。 循环的运行时间只因循环次数增加而增加,没什么额外开销。空间上没有什么增加。 相互转化: 可以相互转化,但是循环转化成递归更容易想;一般尾递归(即最后一句话进行递归)和单向递归(函数中只有一个递归调用地方)都可以用循环来避免递归。更复杂的情况则要引入栈来进行压栈出栈来改造成非递归,这个栈不一定要严格引入栈数据结构,只需要有这样的思路,用数组什么的就可以。 |
相关文章推荐
- ABAP DO循环 和preform 递归
- linux下为目录和文件设置权限,包括子目录的循环递归设置
- google竞赛题SecretSum的另一种C++解法, 使用递归生成代替循环 -- 1
- c,c++易错点总结之递归,循环
- 循环递归的区别?
- 循环、迭代、遍历和递归
- 卡特兰数,程序实现,递归,循环,BST和出入栈顺序的应用
- Node.JS 循环递归复制文件夹目录及其子文件夹下的所有文件
- 循环遍历某个文件夹下面的所有文件,递归方法
- 循环(迭代)与递归的区别
- 二叉树的后序遍历,递归实现与循环实现
- 递归的效率问题及递归与循环比较
- 面试之路(23)-递归和循环优缺点详解
- 数据结构知识整理-递归循环打印杨辉三角
- 循环与递归
- 二分查找算法的递归、循环实现及其缺陷
- 十步法将递归程序快速转变成迭代或循环程序
- 求最大公因子的递归与循环的比较
- 《剑指Offer》递归和循环—
- 二分查找 (循环、递归两种方法)