#include<stdio.h>
//递归函数实现:由于数据变量的压栈出栈,效率低
//当一个问题相当复杂,难以用迭代实现时,此时递归实现的简洁性便可以补偿它所带来的运行时开销。
int fib1(int n)
{
if(n <= 2)
return 1;
else
return fib1(n-1)+fib1(n-2);
}
//非递归函数实现:效率较快,虽然代码的可读性稍微差些。
int fib2(int n)
{
int a1 = 1;
int a2 = 1;
int a3 = 0;
if(n <= 2)
return 1;
else
{
while(n > 2)
{
a3=a1 + a2;
a1=a2; //难点在此
a2=a3;
n--;
}
}
return a3;
}
int main()
{
printf("%d\n",fib1(6));
printf("%d\n",fib2(6));
return 0;
}
用递归和非递归实现斐波那契数
最新推荐文章于 2023-10-04 23:47:51 发布