马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 a905448839 于 2023-4-21 21:05 编辑
这是一个有趣的古典数学问题:如果说兔子在出生两个月后,就有繁殖能力,在拥有繁殖能力之后,这对兔子每个月能生出一对小兔子来,假设所有兔子都不会死去,能够一直生下去,那么两年之后可以繁殖多少对兔子呢?
#include<stdio.h>
int main()
{
int a = 1,b = 1;
int temp,count;
int n;
for(n = 3;n < 25; n++)
{
count = a+b;
a = b;
b = count;
printf("第%d月有%d对兔子\n",n,count);
}
return 0;
}
#include <stdio.h>
int main() {
int matureRabbits[25];
int youngRabbits[25];
matureRabbits[1] = 1;
youngRabbits[1] = 0;
int month;
for (month = 2; month <= 24; month++) {
matureRabbits[month] = matureRabbits[month - 1] + (month > 2 ? youngRabbits[month - 2] : 0);
youngRabbits[month] = matureRabbits[month - 1];
printf("第%d月有%d对大兔子,%d对小兔子\n", month, matureRabbits[month], youngRabbits[month]);
}
int totalRabbits = matureRabbits[24] + youngRabbits[24];
printf("两年后共有%d对兔子\n", totalRabbits);
return 0;
}
#include<stdio.h>
int main()
{
int min[25];
int max[25];
int z[25];
min[0] = 1;//小兔子第一月对数
min[1] = 1;//小兔子第二月对数
max[0] = 0;//大兔子第一月对数
max[1] = 0;//大兔子第二月对数
int n;
for(n = 2;n < 25;n++)
{
max[n] = max[n-1] + min[n-2]; //大兔子等于前一月的大兔子加上前两月小兔子成长后的
min[n] = max[n]+ min[n-1];//小兔子等于本月所生的小兔子+上月未长大的小兔子
printf("第%d月大兔子%d对\n",n+1,max[n]);
printf("第%d月小兔子%d对\n\n",n+1,min[n]);
}
printf("两年后总兔子:%d\n",min[n-1]+max[n-1]);
return 0;
}
三个代码都是可以得出答案的,但实现方式略有不同。
- 第一个代码使用类似斐波那契数列的方式来计算兔子对数,可以输出每个月兔子对数的过程,但没有直接输出最终两年后兔子对数的语句。
- 第二个代码使用了两个数组来分别存储小兔子和大兔子的数量,通过递推计算得出两年后兔子的总数,并输出了每个月兔子对数的过程。
- 第三个代码同样使用了递推式来计算兔子对数,但只用了一个数组来存储兔子对数,最后输出了两年后兔子的总数。
因此,选择哪个代码可以根据实际需求和编程习惯而定。
|