Febonacci函数-递归法vs循环法
我在学习递归过程中,对于Febonacci函数求解,分别利用递归和循环求解
%%递归法代码
int Febonacci(int n){
//递归结束条件,当n<=2
if(n<=2)
return 1;
else
return Febonacci(n-1)+Febonacci(n-2);
}
而使用循环代码
int Febonacci_Function(int n){
int i = 3;
int num1=1,num2=1,temp;
while(i<=n){
temp =num2;
num2 +=num1;
num1 = temp;
i++;
}
return num2;
}
对比结果,虽然递归法简洁,但是较难理解,而且由于系统在进行函数调用时,需要进行:现场保护-转向目标程序-返回主调函数这个过程。因此使用递归比较费时。
我就以上程序测试,计算102阶斐波那契函数,利用递归半天出不来结果,而循环法不到一秒钟结果就出来了。