一般而言,兔子在出生两个月后就有了繁殖能力。假设你现在有一对新生的兔子,而 具有繁殖能力的一对兔子每个月都生出一对小兔子,我们再假设所有的兔子都不死亡,那 么,在第 n 个月你会有多少对兔子呢?请用C语言编程
时间: 2024-10-18 18:10:48 浏览: 73
这是一个经典的动态规划问题,可以用斐波那契数列的思路来解决。在第n个月,你可以通过计算前一个月和前前一个月的兔子数量之和得到结果。因为初始时有一对兔子,所以在第一个月有1对,第二个月有1+1=2对。
C语言的解决方案如下:
```c
#include <stdio.h>
int rabbits(int month) {
if (month <= 0) return 0;
if (month == 1 || month == 2) return 1; // 初始情况
// 使用动态规划的思想,保存前面月份的结果
static int prev = 1, thisMonth = 1;
for (int i = 3; i <= month; i++) {
thisMonth = prev + thisMonth; // 当前月份兔子数量等于上个月加上上上个月的数量
prev = thisMonth - thisMonth; // 更新prev,因为每过一个月,旧的一代兔子就不再增加
}
return thisMonth;
}
int main() {
int n = 10; // 可以替换为任意想要查询的月份
printf("在第 %d 个月会有 %d 对兔子。\n", n, rabbits(n));
return 0;
}
```
当你运行这个程序并更改`main()`函数中的`n`值,它会显示在给定月份的总兔子对数。
阅读全文