鱼C论坛

 找回密码
 立即注册
查看: 1836|回复: 7

[已解决]s1e16 生兔子问题——斐波那契数列

[复制链接]
发表于 2022-6-25 09:27:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
每一对新兔子出生第一个月没哟生育能力,从第二个月起,每月可以生一对新兔子。假设兔子不死,初值的一对两年后存在多少兔子。
看到题目后,对照小甲鱼在下面列出的图表,发现看不懂题目了。
按照题目所说,第一个月应该是1对老兔子,可以生出来1对小兔子,兔子总数2对。第二个月由于上个月新生兔子不能生育,那么只有1对小兔子出生,这个月,有1对兔子具有生育能力,有1对兔子不具有生育,1对新出生的兔子,兔子总数3对。。。。。。。。。然后对照小甲鱼给出的图,第一个月1对,第二个月2对,第三个月4对,我迷茫了。在考虑之后,根据小甲鱼给出的规则利用Excel表格列出了24个月各种兔子的数量如下:

在表格里用批注标注出来每个格内容的来历。然后把这个表格用C语言表现出来,并运行,得到与表格内容相同的结果。

小甲鱼的答案写法比我的简单,运行后,数据和我的大不一样,于是将运行结果也在表格里列出,比较二者差别很大。
我不纠结斐波那契数列问题,纠结的是根据小甲鱼给出的题目条件,我错在哪里了?
我和小甲鱼程序列表对比见下图:
图2.jpg

我的程序清单如下:
  1. #include<stdio.h>

  2. int month,i=1,j=0,k=0,j_0=0,k0=0;//month计算月份,i能生育的老兔子,j不能生育的兔子,k本月新生兔子,j_0为上月不能生育兔子,k0为上月新生兔子。
  3. //计算规则:不能生育的兔子j下月可以生育(数量加入老兔子i),本月新生兔子k下月不能生育j,1对老兔子每月生育1对新生兔子k=i。

  4. int main()
  5. {
  6.         for(month=1;month<=24;month++)
  7.         {
  8.         //计算本月兔子数量
  9.                 j=k0;
  10.                 k=i;
  11.                 i+=j_0;
  12.                 j_0=j;
  13.                 k0=k;


  14.         printf("第%d月,老兔子i=%d,不能生育兔子%d,小兔子%d.\n",month,i,j,k);
  15.         }
  16.         printf("两年之后存在的兔子数量:%d\n",i+j+k);

  17. return 0;
  18. }
复制代码
最佳答案
2022-6-25 12:10:57
对照我的数据吧:
D10EF659-E391-4770-BB3A-7124FD33A6A9.jpeg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-6-25 10:15:49 | 显示全部楼层
是你看错了。
应该是
月数:0 1 2 3 4 5
兔子:1 1 2 3 5 8
f(n)=f(n-1)+f(n-2)(n>2)
        1(n==0||n==1)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-6-25 10:28:56 | 显示全部楼层
ExiaGN001 发表于 2022-6-25 10:15
是你看错了。
应该是
月数:0 1 2 3 4 5

我在帖子里也说了,我现在纠结的不是斐波那契数列问题。是完全针对这个题目来考虑问题的话,不应该是用这个式子。我用Excel完全体现了小甲鱼在题目里的要求,结果不是斐波那契数列。请指出我用Excel列出数据哪里和题目不符。谢谢。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-6-25 11:10:39 From FishC Mobile | 显示全部楼层
顶级太阳 发表于 2022-6-25 10:28
我在帖子里也说了,我现在纠结的不是斐波那契数列问题。是完全针对这个题目来考虑问题的话,不应该是用这 ...

这里面就没有通项公式,没办法用excel来展示
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-6-25 11:31:34 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-6-25 12:03:07 | 显示全部楼层
1月:有一对成熟兔子,所以新生一对兔子
2月:有一对成熟兔子和一对未成熟兔子,所以新生一对兔子,总共3对
3月:有两对成熟兔子和一对未成熟兔子,为何还是新生一对兔子?
后面同理全是这问题
且不说题目条件或是斐波那契数列,就这结果本身逻辑是否讲得通?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-6-25 12:10:57 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
对照我的数据吧:
D10EF659-E391-4770-BB3A-7124FD33A6A9.jpeg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-6-25 15:27:24 | 显示全部楼层

明白了,谢谢。我的列表成了新生兔子2月不能生小兔子。谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-20 19:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表