|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
每一对新兔子出生第一个月没哟生育能力,从第二个月起,每月可以生一对新兔子。假设兔子不死,初值的一对两年后存在多少兔子。
看到题目后,对照小甲鱼在下面列出的图表,发现看不懂题目了。
按照题目所说,第一个月应该是1对老兔子,可以生出来1对小兔子,兔子总数2对。第二个月由于上个月新生兔子不能生育,那么只有1对小兔子出生,这个月,有1对兔子具有生育能力,有1对兔子不具有生育,1对新出生的兔子,兔子总数3对。。。。。。。。。然后对照小甲鱼给出的图,第一个月1对,第二个月2对,第三个月4对,我迷茫了。在考虑之后,根据小甲鱼给出的规则利用Excel表格列出了24个月各种兔子的数量如下:
在表格里用批注标注出来每个格内容的来历。然后把这个表格用C语言表现出来,并运行,得到与表格内容相同的结果。
小甲鱼的答案写法比我的简单,运行后,数据和我的大不一样,于是将运行结果也在表格里列出,比较二者差别很大。
我不纠结斐波那契数列问题,纠结的是根据小甲鱼给出的题目条件,我错在哪里了?
我和小甲鱼程序列表对比见下图:
我的程序清单如下:
- #include<stdio.h>
- int month,i=1,j=0,k=0,j_0=0,k0=0;//month计算月份,i能生育的老兔子,j不能生育的兔子,k本月新生兔子,j_0为上月不能生育兔子,k0为上月新生兔子。
- //计算规则:不能生育的兔子j下月可以生育(数量加入老兔子i),本月新生兔子k下月不能生育j,1对老兔子每月生育1对新生兔子k=i。
- int main()
- {
- for(month=1;month<=24;month++)
- {
- //计算本月兔子数量
- j=k0;
- k=i;
- i+=j_0;
- j_0=j;
- k0=k;
- printf("第%d月,老兔子i=%d,不能生育兔子%d,小兔子%d.\n",month,i,j,k);
- }
- printf("两年之后存在的兔子数量:%d\n",i+j+k);
- return 0;
- }
复制代码
对照我的数据吧:
|
|