兔子繁衍问题——C语言
问题提出
一对兔子,从出生后第三个月起每个月都生一对兔子。小兔子长到第三个月后每个月又生一对兔子。假如兔子都不死,请问第一个月出生的一对兔子,至少需要繁衍到第几个月时兔子总数才能到达n对?输入一个不超过10 000的正整数n,输出兔子总数达到n的最少月数,试编写相应程序。
思路
由于兔子基数为一对,可以试用列举法观察规律
月份123456
对数112358
不难发现这是一个斐波那契数列,兔子的总数是上一个月的数量加上上个月的数量,即S(n)=S(n-1)+S(n+1)
程序设计
#include<stdio.h>
int main()
{
int n
,m
=1,t
=1,count
=2;
int sum
=1;
printf("输入要达到的兔子总对数n(n<=10000):");
scanf("%d",&n
);
if(n
==1){
printf("1");
}
else{
while(sum
<n
){
count
++;
t
=m
;
m
=sum
;
sum
=sum
+t
;
}
printf("需要的月数:%d\n",count
);
}
return 0;
}
运行演示