鱼C论坛

 找回密码
 立即注册
查看: 1584|回复: 6

[已解决]关于C语言兔子繁衍问题得另一个想法!!!!

[复制链接]
发表于 2021-4-13 22:02:06 | 显示全部楼层 |阅读模式

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

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

x
我们都知道输入月份--》然后通过迭代来实现-》几个月份后有多少对兔子!
但是
如果反过来想呢?
就是你输入要达到的兔子数量-》来推测需要几个月能繁衍到呢?大于或等于!
为了方便我给出-》题目-》如下:
//一对兔子,从出生后第3个月起每个每个月都生一对小兔子。小兔子长到第3个月后
//每个月又生一对兔子!
//假如兔子都不死的话,请问第一个月出生的一对兔子,至少需要繁衍到第几个月时兔子总数可以达到N对?

部分代码如下:

  1. #include <stdio.h>
  2. int main()
  3. {
  4.     int month=1,f=0,f1=1,f0=0,f3=0;
  5.     printf("请输入想要繁衍到的兔子的数量(单位:对):");
  6.     scanf("%d",&f);
  7.     ... ...
  8.     return 0;
  9. }

复制代码

希望写的解释尽可能详细点,谢谢啦!
最佳答案
2021-4-14 17:57:14
肖-肖 发表于 2021-4-14 14:48
为什么我输入2 (也就是达到2对兔子)
运行到sum+=t;得时候不应该是:sum=1+1=2-->然后2
  1. #include <stdio.h>
  2. int main()
  3. {

  4.   int n,m=1,t=1, count=2; // m, t 为前2个月的数量, count 几个月
  5.   int sum =1;    // 用于记录迭代 兔纸数量           

  6.   scanf("%d",&n);  // n 你输入的 兔纸数量
  7.   if(n==1){
  8.     printf("1");
  9.   }else{
  10.       while(sum<n){
  11.         count++;
  12.         t=m;  // 后面这3句就是 1+1=2 1+2=3这个过程(后一个月的数量是前2个月数量和)
  13.         m=sum;
  14.         sum+=t;
  15.       }
  16.       printf("%d\n",cont);
  17.   }
  18.   return 0;
  19. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-4-13 22:51:48 | 显示全部楼层

回帖奖励 +3 鱼币

同样迭代啊。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-13 22:55:10 | 显示全部楼层
  1. #include <stdio.h>
  2. int main()
  3. {
  4. //a(n)=a(n-1)+a(n-2)
  5.   int n,m=1,t=1,count=2;
  6.   int sum =1;                //sum 几个月

  7.   scanf("%d",&n);  // n 兔纸数量
  8.   if(n==1){
  9.     printf("1");
  10.   }else{
  11.       while(sum<n){
  12.         count++;
  13.         t=m;
  14.         m=sum;
  15.         sum+=t;
  16.       }
  17.       printf("%d\n",count);
  18.   }
  19.   return 0;
  20. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2021-4-14 14:48:52 | 显示全部楼层

为什么我输入2 (也就是达到2对兔子)
运行到sum+=t;得时候不应该是:sum=1+1=2-->然后2<2不成立--》然后count为2吗?为什么会输出3,虽然3月份会有2对是正确的。
还有就是m和t跟别代表什么?
能不能解释下这三行代码:
        t=m;
        m=sum;
        sum+=t;
麻烦了!!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-14 17:00:15 | 显示全部楼层

厉害
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-14 17:57:14 | 显示全部楼层    本楼为最佳答案   
肖-肖 发表于 2021-4-14 14:48
为什么我输入2 (也就是达到2对兔子)
运行到sum+=t;得时候不应该是:sum=1+1=2-->然后2
  1. #include <stdio.h>
  2. int main()
  3. {

  4.   int n,m=1,t=1, count=2; // m, t 为前2个月的数量, count 几个月
  5.   int sum =1;    // 用于记录迭代 兔纸数量           

  6.   scanf("%d",&n);  // n 你输入的 兔纸数量
  7.   if(n==1){
  8.     printf("1");
  9.   }else{
  10.       while(sum<n){
  11.         count++;
  12.         t=m;  // 后面这3句就是 1+1=2 1+2=3这个过程(后一个月的数量是前2个月数量和)
  13.         m=sum;
  14.         sum+=t;
  15.       }
  16.       printf("%d\n",cont);
  17.   }
  18.   return 0;
  19. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-14 18:04:47 | 显示全部楼层


好的 我明白了!谢谢!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-30 03:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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