[问题描述]
1202年,意大利数学家Fibonacci出版了他的《算盘全书》。他在书中提出了一个关于兔子繁殖的问题: 如果一对兔子每月能生一对小兔(一雄一雌),而每对小兔在他出生后的第三個月裡,又能开始生一对小兔,假定在不发生死亡的情況下,由一对出生的小兔开始始,50個月后会有多少对兔子? 我们可以总结出fibonacci数列的定义如下: f(0) = 0 f(1) = 1 f(n) = f(n-1) + f(n-2) 写一个程序输出f(n)的值(0≤n≤46)
[输入]
有多组测试数据,每组测试数据为单独一行,这一行中只有一个整数n(0≤n≤46),如果输入是-1,表示输入结束。-1不用处理。
[输出]
对每组测试数据,在单独的一行中输出f(n)。
[输入样列]
3
4
5
-1
[输出样例]
2
3
5
代码如下:
#include<stdio.h>
#include<string.h>
int main(){
int n,m;
int i,j,k;
int a,b,c,d;//a:成年兔(三个月以上)的对数
//b:刚出生的兔子的对数
//c:一月大
//d:二月大
scanf("%d",&n);
while(n!=-1){
a=1;
b=c=d=0;//初始化
for(i=2;i<n;i++){
d=c;//一定要从d开始,否则直接赋值的话会把后面要用的数据改掉
c=b;
b=a;
a+=d;
}
printf("%d\n",a+b+c+d);
scanf("%d",&n);
}
return 0;
}
1万+



被折叠的 条评论
为什么被折叠?



