肖-肖 发表于 2021-4-13 22:02:06

关于C语言兔子繁衍问题得另一个想法!!!!

我们都知道输入月份--》然后通过迭代来实现-》几个月份后有多少对兔子!
但是
如果反过来想呢?
就是你输入要达到的兔子数量-》来推测需要几个月能繁衍到呢?大于或等于!
为了方便我给出-》题目-》如下:
//一对兔子,从出生后第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;
}


希望写的解释尽可能详细点,谢谢啦!

ba21 发表于 2021-4-13 22:51:48

同样迭代啊。

ba21 发表于 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;
}

肖-肖 发表于 2021-4-14 14:48:52

ba21 发表于 2021-4-13 22:55


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

lingehhhc666 发表于 2021-4-14 17:00:15

ba21 发表于 2021-4-13 22:51
同样迭代啊。

厉害

ba21 发表于 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;
}

肖-肖 发表于 2021-4-14 18:04:47

ba21 发表于 2021-4-14 17:57


好的 我明白了!谢谢!
页: [1]
查看完整版本: 关于C语言兔子繁衍问题得另一个想法!!!!