分析:兔子的对数从第一月开始:1,1,2,3,5,8…
规则:从第三月开始,每月的对数是前两月之和
题目问每个月的兔子总数,为更好理解,在此指定具体月数,改为求第20月的兔子总数
本题分别运用三种的方法实现:数组实现、用变量的变化实现、递归实现
数组实现代码如下:
int[] array = new int[20];
array[0] = 1; //已知第一月对数为1
array[1] = 1; //已知第二月对数为1
for (int i = 2; i < array.length; i++) {
array[i] = array[i - 2] + array[i - 1]; //从第三月开始,每月的对数是前两月之和
}
System.out.println("第20月兔子的有" + array[array.length - 1] + "对");
用变量的变化实现代码如下:
int a = 1;
int b = 1;
for (int i = 0; i < 18; i++) {
int temp = a;
a = b;
b = temp + b;
}
System.out.println("第20月兔子的有" + b + "对");
递归实现代码如下:
public static int rabbitNum(int r) { //r为第几月
if (r == 1 || r == 2) {
return 1;
} else {
return rabbitNum(r - 1) + rabbitNum(r - 2); //从第三月开始,每月的对数是前两月之和
}
}
public static void main(String[] args) {
System.out.println("第20月兔子的有" + rabbitNum(20) + "对");
}