递归和非递归分别实现求第n个斐波那契数
要求:
输入:5 输出:5
输入:10, 输出:55
输入:2, 输出:1
1.非递归实现
int main()
{
int n = 0;
printf("你想得到到底几个数:");
scanf("%d", &n);
int ret = fabonacci(n);
printf("%d", ret);
return 0;
}
int fabonacci(int n)
{
int i,result;
int a = 1;
int b = 1;
if (n <= 2)
{
return 1;
}
if (n>=3)
for (i = 3; i <= n; i++)
{
result=a+b;
a = b;
b=result;
}
return result;
}
2,递归实现
int fabonacci(int n)
{
if (n<= 2)
return 1;
else
return fabonacci(n-1) + fabonacci(n - 2);//自己调用自己
}
int main()
{
int n = 0;
printf("你想得到到底几个数:");
scanf("%d", &n);
int ret = fabonacci(n);
printf("%d", ret);
return 0;
}
总结:
递归体现的是大事化小,特别方便,但不容易,后面我会继续与大家分享递归实现的其它问题,希望我们一起进步。加油