拿斐波那契数列求解举例:
1.递归
int fib(int n){
if(n>1) return fib(n-1) + fib(n-2);
else return n; // n = 0, 1时给出recursion终止条件
}
2.迭代
int fib(int n){
int i, temp0, temp1, temp2;
if(n<=1) return n;
temp1 = 0;
temp2 = 1;
for(i = 2; i <= n; i++){
temp0 = temp1 + temp2;
temp2 = temp1;
temp1 = temp0;
}
return temp0;
}
在循环的次数较大的时候,迭代的效率明显高于递归。
从概念上讲,递归就是指程序调用自身的编程思想,即一个函数调用本身;
迭代是利用已知的变量值,根据递推公式不断演进得到变量新值得编程思想。
简单地说,递归是重复调用函数自身实现循环。迭代是函数内某段代码实现循环。
迭代与普通循环的区别是:迭代时,循环代码中参与运算的变量同时是保存结果的变量,当前保存的结果作为下一次循环计算的初始值。
递归与普通循环的区别是:循环是有去无回,而递归则是有去有回(因为存在终止条件)。
转载,原文链接:https://blog.youkuaiyun.com/qq_40817827/article/details/89950325