石上岸 发表于 2020-6-25 21:37:14

求助,这个问题不是很理解,望大佬们解答

题目:古典问题(兔子生崽):有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?(输出前40个月即可)

程序分析:兔子的规律为数列1,1,2,3,5,8,13,21....,即下个月是上两个月之和(从第三个月开始)。
#include<stdio.h>

int main()
{
    int f1=1,f2=1,i;
    for(i=1;i<=20;i++)
    {
      printf("%12d%12d",f1,f2);
      if(i%2==0) printf("\n");
      f1=f1+f2;
      f2=f1+f2;
    }
   
    return 0;
}

我有的问题如下:
1.为啥兔子的规律是1,1,2,3,5,8,13,21....,应该是兔子的对数是1,1,2,3,5,8,13,21....吧
2.如果是这样编写的话,那是因为都除以2了吗?所以for循环里面的40个月变成20个月了?

反正有点迷,可能自己太菜了吧。
希望大佬们帮忙解答下~谢啦

liuzhengyuan 发表于 2020-6-25 21:50:00

一次循环应该可以定义两个数位

Python初学者8号 发表于 2020-6-25 21:52:05

这不是斐波那契数列吗

小甲鱼的铁粉 发表于 2020-6-25 22:13:59

是兔子的只数,默认是两只可以配对,不考虑公兔和母兔,不考虑兔子会死亡。
其实这个问题是不用去深究的,只要记住斐波那契数列的性质就好了,很好记的{:10_297:}

石上岸 发表于 2020-6-25 22:14:34

Python初学者8号 发表于 2020-6-25 21:52
这不是斐波那契数列吗

我知道这个是斐波那契数列,但是这个题咋就跟斐波那契数列挂钩了,就不明白了,哈哈哈

石上岸 发表于 2020-6-25 22:16:31

liuzhengyuan 发表于 2020-6-25 21:50
一次循环应该可以定义两个数位

这么一说好像是,所以就是20了。可以我觉得输出的最后的数字应该在乘以2才是兔子总数,现在求出来的对兔子对数。

liuzhengyuan 发表于 2020-6-26 07:47:57

石上岸 发表于 2020-6-25 22:16
这么一说好像是,所以就是20了。可以我觉得输出的最后的数字应该在乘以2才是兔子总数,现在求出来的对兔 ...

应该是对的
有可能这个题目没有描述清楚

405794672 发表于 2020-6-26 11:27:49

本帖最后由 405794672 于 2020-6-26 11:29 编辑

我也做过100例。可以明显感觉出出题人和解题人的水平
不用纠结。再说了,人家说兔子的规律,也没说是对还是只,这点也是符合情况的
for循环除以2,是因为一次变出了两个变量。循环一次就第一,第二,循环两次就第三,第四
所以嘛,40个月,只能循环20次。
至于解题人这么菜,也不能说菜,就是不严谨,容易把一当成二的主。不用纠结他,只管自己理解就好了

石上岸 发表于 2020-6-26 14:25:14

405794672 发表于 2020-6-26 11:27
我也做过100例。可以明显感觉出出题人和解题人的水平
不用纠结。再说了,人家说兔子的规律,也没说是对还 ...

哈哈哈哈好滴,感谢

石上岸 发表于 2020-6-26 14:25:52

liuzhengyuan 发表于 2020-6-26 07:47
应该是对的
有可能这个题目没有描述清楚

好的感谢啦

Python初学者8号 发表于 2020-6-27 07:50:29

石上岸 发表于 2020-6-25 22:14
我知道这个是斐波那契数列,但是这个题咋就跟斐波那契数列挂钩了,就不明白了,哈哈哈

{:5_97:}
大概这就是专业吧

柏泽 发表于 2020-6-28 13:33:30

每循环一次就输出2个月的兔子对数,循环20次一次输出两个月,刚好40个月。
对应该就是这样
页: [1]
查看完整版本: 求助,这个问题不是很理解,望大佬们解答