需求:
古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少(计算30个月的)?
分析:
这是一个典型的斐波那契数列,第一个月和第二个月兔子的数量为1对,从第三个月开始每月兔子的数量等于上一月的数量加上上个月兔子的数量。
第一个月是1对
第二个月是1对
第三个月是1+1=2对
第四个月是2+1=3对
第五个月是3+2=5对
第六个月是5+3=8对
第七个月是8+5=13对
.................
//创建一个长度为30(30个月兔子的数量)的一维数组
int[] sum = new int[30];
for (int i = 0; i < sum.length; i++) {
//第一个月和第二个月是一对
if (i == 0 || i == 1) {
sum[i] = 1;
}else {
//从第三个月开始兔子的数量等于上个月加上上个月兔子的数量
sum[i] = sum[i-1]+sum[i-2];
}
}
//遍历数组得到每个月兔子的对数
System.out.println(Arrays.toString(sum));
}
}
输出的结果为:
运行结果:
1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418, 317811, 514229, 832040