java古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第n个月的兔子总数为多少对? 输入: 3 输出: 2 输入: 5 输出: 5
时间: 2024-10-08 19:24:31 浏览: 77
JAVA经典算法,有可能在面试中出现的题目哟.doc
这是一个经典的斐波那契数列变种问题,通常用动态规划或递归的方式来求解。在这个问题中,前两个月兔子数量不变(因为第一个月出生0对,第二个月出生1对),但从第三个月开始,每个月的数量是前两个月之和。所以每个月的兔子对数可以用上一个月的对数加上上上个月的对数计算。
你可以用如下的Java代码来实现这个逻辑:
```java
public class RabbitPopulation {
public static int rabbitPairs(int month) {
if (month <= 2) { // 前两个月兔子数量分别是0和1
return month;
}
int pairs = 1; // 上一个月的兔子对数
for (int i = 3; i < month; i++) {
pairs += pairs; // 每个月都是前两个月的总和
}
return pairs;
}
public static void main(String[] args) {
System.out.println(rabbitPairs(3)); // 输出:2
System.out.println(rabbitPairs(5)); // 输出:5
}
}
```
这里`rabbitPairs`方法接收月份`month`作为参数,然后返回该月的兔子对数。在`main`方法里,我们测试了两个例子,分别对应题目中的输入。
阅读全文