#鹏哥C语言#P48
方法一:递归-此问题不适合用递归解决
#include<stdio.h>
int Fib(int n)
{
if(n<=2)
return 1;
else
return Fib(n-1)+Fib(n-2);
}
int main()
{
int n=0;
printf("请输入你想获取第几个斐波那契数的值:");
scanf("%d",&n);
int ret=Fib(n);
printf("第%d个斐波那契数的值为:%d\n",n,ret);
return 0;
}
方法二:迭代(不考虑溢出)
#include<stdio.h>
int Fib(int n)
{
if(n<=2)
return 1;
else
{
int a=1;
int b=1;
int c=0;
while(n>=3)
{
c=a+b;
a=b;
b=c;
n--;
}
return c;
}
}
int main()
{
int n=0;
printf("请输入你想获取第几个斐波那契数的值:");
scanf("%d",&n);
int ret=Fib(n);
printf("第%d个斐波那契数的值为:%d\n",n,ret);
return 0;
}
运行结果展示: