关于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;
}
希望写的解释尽可能详细点,谢谢啦! 同样迭代啊。 #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;
}
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;
麻烦了!!
ba21 发表于 2021-4-13 22:51
同样迭代啊。
厉害
肖-肖 发表于 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;
}
ba21 发表于 2021-4-14 17:57
好的 我明白了!谢谢!
页:
[1]