一对兔子,从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子。假如兔子都不死,请问第1个月出生的一对兔子,至少需要繁衍到第几个月时兔子总数才可以达到N对?
题目:一对兔子,从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子。假如兔子都不死,请问第1个月出生的一对兔子,至少需要繁衍到第几个月时兔子总数才可以达到N对?
程序分析:
第一个月-----------------1
第二个月-----------------1
第三个月-----------------2
第四个月-----------------3
第五个月-----------------5
第六个月-----------------8
第七个月-----------------13
... ...
从中发现,从第三个月开始,前两个月兔子数之后为第三个兔子总数,即普通的斐波那契数列。
#include<stdio.h>
int main()
{
int i,n,s1,s2;
scanf("%d",&n);
s1=0;s2=1;i=0;
while(s1<n){
i++;
s2=s1+s2;
s1=s2-s1;
}
printf("%d",i);
}
s1,s2,分别存储n,n-1项,简单地验证可以知道是正确的。
实在搞不懂为啥有的要搞自定义函数递归、数组...
那么这道题目就简简单单地做出来了。