用Java写段代码解决以下问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个 月后每个月又生一对兔子,假如兔子都不死,问n个月后兔子总数为多少?
时间: 2024-09-28 15:13:52 浏览: 28
在Java中,我们可以使用递归的方式来解决这个问题,因为每个月的兔子数量都是前一个月的一对加上前两个月中新生的一对。这是一个经典的斐波那契数列问题,只不过这里的增长模式不是简单的线性,而是按照一定的规律递增。
以下是使用递归的Java代码:
```java
public class RabbitPopulation {
public static int rabbitPopulation(int month) {
if (month < 0) {
throw new IllegalArgumentException("Month must be non-negative.");
}
// 基本情况:前三个月分别是一只、一对和两对兔子
if (month == 0 || month == 1) {
return 1;
} else if (month == 2) {
return 2;
}
// 递归情况:第四个月及以后,计算上个月和第三个月的数量总和
return rabbitPopulation(month - 1) + rabbitPopulation(month - 2);
}
public static void main(String[] args) {
int n = 12; // 假设求的是第12个月后的兔子总数
int totalRabbits = rabbitPopulation(n);
System.out.println("After " + n + " months, there are " + totalRabbits + " rabbits.");
}
}
```
在这个代码中,`rabbitPopulation`函数接受一个月份作为参数,返回该月的兔子总数。递归终止条件是月份小于3,然后逐步将结果累加。
阅读全文