不死神兔问题
问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第二十个月的兔子对数为多少?
规则:
从第三项开始,每一项是前两项之和
且前两项是已知的
1. 数组实现
代码实现:
// 定义一个数组
int[] arr = new int[20];
arr[0] = 1;
arr[1] = 1;
for (int x = 2; x < arr.length; x++) {
arr[x] = arr[x - 2] + arr[x - 1];
}
System.out.println(arr[19]);
2. 变量的变化实现
代码实现:
int a = 1;
int b = 1;
for (int x = 0; x < 18; x++) {
int temp = a;
a = b;
b = temp + b;
}
System.out.println(b);
3. 递归实现
代码实现:
public static int fib(int n) {
if (n == 1 || n == 2) {
return 1;
} else {
return fib(n - 1) + fib(n - 2);
}
}
}