递归 循环 比较
2014-06-05 09:41
197 查看
算法分析:
循环算法和递归算法 无论时间效率还是空间效率都是前者高。递归算法在运行时,函数调用保存现场、开辟运行资源、返回回收资源都需要耗时。递归算法的参数表面是一个变量,实际上市一个栈。
结论1:
递归确实是一些复杂的问题处理起来简单明了,但是,就效率而言,递归算法的实现往往比循环算法耗费更多的时间和存储空间,也限制了递归的深度。所以,在具体的实现中,应尽可能把递归算法转换为等价的循环算法,以提高算法的时空效率。
相应问题,如给一个整数,从低位到高位输出各位的数字。
结论2:
由于递归算法的实现包括递归和回溯两步,当问题需要“后进先出”的操作时,还是用递归更有效。如数据结构中树的遍历,图的深度优先搜索等。
相应问题,如给一个整数,从高位到低位输出各位的数字。
循环算法和递归算法 无论时间效率还是空间效率都是前者高。递归算法在运行时,函数调用保存现场、开辟运行资源、返回回收资源都需要耗时。递归算法的参数表面是一个变量,实际上市一个栈。
结论1:
递归确实是一些复杂的问题处理起来简单明了,但是,就效率而言,递归算法的实现往往比循环算法耗费更多的时间和存储空间,也限制了递归的深度。所以,在具体的实现中,应尽可能把递归算法转换为等价的循环算法,以提高算法的时空效率。
相应问题,如给一个整数,从低位到高位输出各位的数字。
结论2:
由于递归算法的实现包括递归和回溯两步,当问题需要“后进先出”的操作时,还是用递归更有效。如数据结构中树的遍历,图的深度优先搜索等。
相应问题,如给一个整数,从高位到低位输出各位的数字。
相关文章推荐
- 递归的效率问题及递归与循环比较
- 数据结构-循环和递归比较(31)
- 递归的效率问题及递归与循环比较
- 递归和循环效率比较
- 【郝斌数据结构自学笔记】53-56_一个函数为什么可以自己调用自己_递归必须满足三个条件_循环和递归的比较
- 递归与循环的开销比较,高精度时间函数
- 循环和递归的优缺点比较
- 求最大公因子的递归与循环的比较
- 【JAVASCRIPT】递归与循环的效率比较
- C/C++程序——递归和循环实现阶乘,并比较N!与(2N N)的大小
- 摘要:我们经常会用到递归函数,但是如果递归深度太大时,往往导致栈溢出。而递归深度往往不太容易把握,所以比较安全一点的做法就是:用循环代替递归。文章最后的原文里面讲了如何用10步实现这个过程,相当精彩。本文翻译了这篇文章,并加了自己的一点注释和理解。
- 递归的效率问题及递归与循环比较
- 递归与循环比较
- 递归求和(Recursive)与for循环求和效率问题的简单比较
- 在论坛中出现的比较难的sql问题:28(循环查询表来实现递归)
- 【算法】递归与while循环的通俗比较
- 反转链表的循环方式和递归方式
- 循环与递归及Fibonacci(斐波那契)数列解法
- thinkPHP实现递归循环栏目并按照树形结构无限极输出的方法
- [算法设计与分析]3.1.3递归与循环的比较(输出各位数字+任何数都可以用2的幂表示+组合数)