64 兔生兔
如果一对兔子每月生一对兔子;一对新生兔,从第二个月起就开始生兔子;假定每对兔子都是一雌一雄,试问一对兔子,第 n 个月能繁殖成多少对兔子?(举例,第1个月是1对兔子,第2个月是2对兔子)
输入格式
- 数字
输出格式
- 数字
输入样例
- 5
输出样例
- 8
数据范围
[1, 75]
测试数据集
- 样例1
- 输入:
5 - 输出:
8
- 输入:
- 样例2
- 输入:
1 - 输出:
1
- 输入:
- 样例3
- 输入:
15 - 输出:
987
- 输入:
- 样例4
- 输入:
50 - 输出:
20365011074
- 输入:
解题思路
这个问题实际上是经典的斐波那契数列问题。斐波那契数列定义如下:
- F(1) = 1
- F(2) = 1
- F(n) = F(n-1) + F(n-2) ,其中
n > 2
在本问题中:
F(n)表示第n个月结束时的兔子总对数。- 每对兔子从第二个月起开始生育,每月生一对新兔子。
因此,兔子的增长规律完全符合斐波那契数列。
算法实现
public class Main {
public static long solution(int A) {
// Edit your code here
// 定义两个变量来存储前两个月兔子的数量
long prevPrev = 1;
long prev = 1;
long current = 0;
for (int i = 2; i <= A; i++) {
// 计算当前月兔子的数量
current = prevPrev + prev; // 关键步骤
prevPrev = prev;
prev = current;
}
return prev;
}
// 1 2 3 5 8 13
public static void main(String[] args) {
// Add your test cases here
System.out.println(solution(5) == 8);
System.out.println(solution(1) == 1);
System.out.println(solution(15) == 987);
System.out.println(solution(50) == 20365011074L);
}
}