logo头像

你需要一点点勇气

递归和迭代的区别

相同点

递归和迭代都是循环

不同点

(1)循环方式不同
递归是通过调用自身函数进行循环;迭代是通过函数内的一段代码段进行循环。迭代的代码段中的本地循环的结果变量,将作为下次循环的输入变量结算下次循环的结果。

(2)循环结束条件不同
递归,当满足终止条件(可以直接解决问题的阀值)逐层返回子问题结果结束;迭代使用计数器计数器,如for(int i; i条件; i操作)来控制循环结束。

(3)效率不同
循环次数逐渐变大时,迭代的效率会高于递归的效率,因为递归调用自身的函数需要不断入栈出栈,所以消耗的时间比较长。并且迭代像是自底向上的计算,每一次循环的结果都作为下一次循环的输入;迭代更像是自顶向下的求解,会存在一些冗余计算。

e.g. 斐波那契数组 迭代和递归实现