生物学家小 R 正在研究一种特殊的兔子品种的繁殖模式。这种兔子的繁殖遵循以下规律:
每对成年兔子每个月会生育一对新的小兔子(一雌一雄)。 新生的小兔子需要一个月成长,到第二个月才能开始繁殖。 兔子永远不会死亡。 小 R 从一对新生的小兔子开始观察。他想知道在第 A 个月末,总共会有多少对兔子。
请你帮助小 R 编写一个程序,计算在给定的月份 A 时,兔子群体的总对数。
注意:
初始时有 1 对新生小兔子。 第 1 个月末有 1 对兔子:原来那对变成了成年兔子,并开始繁殖。 第 2 个月末有 2 对兔子:原来那 1 对成年兔子,繁殖了 1 对新生的小兔子。 从第 3 个月开始,兔子群体会按照上述规律增长。 输入 一个整数 A(1 ≤ A ≤ 50),表示月份数。
返回 一个长整数,表示第 A 个月末兔子的总对数。
测试样例 样例1:
输入:A = 1 返回:1
样例2:
输入:A = 5 返回:8
样例3:
输入:A = 15 返回:987 初始化变量:我们需要两个变量来存储前两个月的兔子对数。 迭代计算:从第三个月开始,每个月的兔子对数是前两个月兔子对数之和。 返回结果:最后返回第 n 个月的兔子对数。 代码框架 java public class Main { public static long solution(int A) { // 如果月份小于等于 2,直接返回A if (A <= 2) { return A; } // 初始化前两个月的兔 子对数 long prev1 = 1; // 第一个月的兔子 对数 long prev2 = 2; // 第二个月的兔子 对数 long current = 0; // 当前月的兔子对 数 // 从第三个月开始迭代 计算 for (int i = 3; i <= A; i++) { // 计算当前月的 兔子对数 current = prev1 + prev2; // 更新前两个月 的兔子对数 prev1 = prev2; prev2 = current; } // 返回第A个月的兔子 对数 return current; } public static void main(String[] args) { // 添加你的测试用例 System.out.println (solution(1) == 1L); System.out.println (solution(5) == 8L); System.out.println (solution(15) == 987L); }}
关键步骤解释 初始条件:如果 A 小于等于2,直接返回 A。 迭代计算:从第三个月开始,使用循环计算每个月的兔子对数,并更新前两个月的兔子对数。 返回结果:最后返回第 A 个月的兔子对数。 你可以根据这个框架继续完善代码,确保所有测试用例都能通过。