用java编译,有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第n个月的兔子总数为多少对?
时间: 2024-10-12 15:13:24 浏览: 20
这个问题描述的是著名的“斐波那契兔”的问题,也被称为“兔子繁殖”问题或者是“斐波那契序列”在实际问题中的应用。可以用递归或者动态规划的方式来解决。
在Java中,我们可以使用动态规划来计算第n个月兔子的数量。假设`F[n]`表示第n个月兔子的总数,根据题设,有以下关系:
- 第1个月,母兔子只有1对,所以第1个月的兔子总数是1对。
- 第2个月,母兔子开始繁殖,但小兔子还没出生,所以仍然是1对。
- 从第3个月开始,每个月的兔子数量都是前两个月的总和。即`F[n] = F[n-1] + F[n-2]`。
以下是Java代码实现:
```java
public class RabbitPopulation {
public static int rabbitPopulation(int n) {
if (n <= 0) {
throw new IllegalArgumentException("Month number must be positive");
}
// 创建一个足够大的数组存储前n个月的兔子数量
int[] fib = new int[n+1];
fib[0] = 1; // 第一个月
fib[1] = 1; // 第二个月
// 使用动态规划填充数组
for (int i = 2; i <= n; i++) {
fib[i] = fib[i-1] + fib[i-2]; // 本月兔子数量等于上月加上上上月
}
return fib[n]; // 返回第n个月的兔子总数
}
// 测试
public static void main(String[] args) {
System.out.println(rabbitPopulation(6)); // 输出:8 对
}
}
```
阅读全文