鱼C论坛

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

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

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

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

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

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

部分代码如下:
#include <stdio.h>
int main()
{
    int month=1,f=0,f1=1,f0=0,f3=0;
    printf("请输入想要繁衍到的兔子的数量(单位:对):");
    scanf("%d",&f);
    ... ...
    return 0;
}
希望写的解释尽可能详细点,谢谢啦!
最佳答案
2021-4-14 17:57:14
肖-肖 发表于 2021-4-14 14:48
为什么我输入2 (也就是达到2对兔子)
运行到sum+=t;得时候不应该是:sum=1+1=2-->然后2
#include <stdio.h>
int main()
{

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

  scanf("%d",&n);  // n 你输入的 兔纸数量
  if(n==1){
    printf("1");
  }else{
      while(sum<n){ 
        count++;
        t=m;  // 后面这3句就是 1+1=2 1+2=3这个过程(后一个月的数量是前2个月数量和)
        m=sum; 
        sum+=t;
      }
      printf("%d\n",cont);
  }
  return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

回帖奖励 +3 鱼币

同样迭代啊。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

  scanf("%d",&n);  // n 兔纸数量
  if(n==1){
    printf("1");
  }else{
      while(sum<n){
        count++;
        t=m;
        m=sum; 
        sum+=t;
      }
      printf("%d\n",count);
  }
  return 0;
}
想知道小甲鱼最近在做啥?请访问 -> 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;
麻烦了!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

厉害
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

  scanf("%d",&n);  // n 你输入的 兔纸数量
  if(n==1){
    printf("1");
  }else{
      while(sum<n){ 
        count++;
        t=m;  // 后面这3句就是 1+1=2 1+2=3这个过程(后一个月的数量是前2个月数量和)
        m=sum; 
        sum+=t;
      }
      printf("%d\n",cont);
  }
  return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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


好的 我明白了!谢谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-13 16:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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