求第N个斐波拉契数
采用函数递归的方法:
#include<stdio.h>
int Fib1(int x)
{
if(x<=2)
return 1;
else
return Fib1(x-1)+Fib1(x-2);
}
int main()
{
int n=0;
int ret=0;
printf("请输入你想找的第N个斐波拉契数: \n");
scanf("%d",&n);
ret=Fib1(n);
printf("第%d个斐波拉契数为:%d\n",n,ret);
}
但是使用函数递归的方法,在计算数值较大的第N个斐波拉契数的时候,效率低下,于是可以采用循环来完成,代码如下:
#include<stdio.h>
int Fib1(int n)
{
int a=1;
int b=1;
int c=1;
while(n>2)
{
c=a+b;
a=b;
b=c;
n--;
}
return c;
}
int main()
{
int n=0;
int ret=0;
printf("请输入你想找的第N个斐波拉契数: \n");
scanf("%d",&n);
ret=Fib1(n);
printf("第%d个斐波拉契数为:%d\n",n,ret);
}
菜菜的代码,希望能够帮助到你哟!