您的位置:首页 > 其它

循环与递归

2009-06-04 11:04 176 查看
优缺点:

循环效率更高,递归容易理解 是大家普遍的观点。尽管两种想法在时间复杂度和空间复杂度上是等价的。但递归的有一个弱势:函数调用开销如参数传递和堆栈之类的开销,会导致在层次过深的时候,系统崩溃。递归是用栈机制实现的(c++),每深入一层,都要占去一块栈数据区域,对嵌套层数深的一些算法,递归会力不从心,空间上会以内存崩溃而告终,而且递归也带来了大量的函数调用,这也有许多额外的时间开销。所以在深度大时,它的时空性就不好了。 循环的运行时间只因循环次数增加而增加,没什么额外开销。空间上没有什么增加。

相互转化:

可以相互转化,但是循环转化成递归更容易想;一般尾递归(即最后一句话进行递归)和单向递归(函数中只有一个递归调用地方)都可以用循环来避免递归。更复杂的情况则要引入栈来进行压栈出栈来改造成非递归,这个栈不一定要严格引入栈数据结构,只需要有这样的思路,用数组什么的就可以。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: