#include <stdio.h>
//1 1 2 3 5 8 13 21 34 55
int main()
{
int n = 0;
printf("请输入要求的第n个斐波那契数:");
scanf("%d",&n);
int a = 1;
int b = 1;
int c = 0;
while(n>=3)
{
c = a+b;
a = b;
b = c;
n--;
}
printf("第%d个斐波那契数为:%d",n,b);
return 0;
}
修改为函数形式:
#include <stdio.h>
//1 1 2 3 5 8 13 21 34 55
int Fib(int n)
{
int a = 1;
int b = 1;
int c = 0;
while(n>=3)
{
c = a+b;
a = b;
b = c;
n--;
}
return b;
}
int main()
{
int n = 0;
printf("请输入要求的第n个斐波那契数:");
scanf("%d",&n);
int ret = Fib(n);
printf("第%d个斐波那契数为:%d",n,ret);
return 0;
}
用递归实现(比非递归简单,且更容易理解):
#include <stdio.h>
//1 1 2 3 5 8 13 21 34 55
int Fib(int n)
{
if(n>=3)
{
return Fib(n-1) + Fib(n-2);
}
else
return 1;
}
int main()
{
int n = 0;
printf("请输入要求的第n个斐波那契数:");
scanf("%d",&n);
int ret = Fib(n);
printf("第%d个斐波那契数为:%d",n,ret);
return 0;
}