**不死神兔
不死神兔也叫做斐波那契数列或者叫做黄金分割数列或者叫做兔子数列:
不死神兔问题:有1对兔子,从出生后的第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月
又生一对兔子,假如兔子都不死,问第n个月有几对兔子
需求:我们这里需要知道第二十个月的兔子对数为多少?
斐波那契数列思想的图解如下图所示:
**
斐波那契数列思想的图解:
/*斐波那契数列思想如下所示:
找规律:
月份(n): 1 2 3 4 5 6 7 8 9 10 .....
兔子对数(f): 1 1 2 3 5 8 13 21 34 55 .....
规律:从第三个月开始,每个月的兔子对数是前两个月的兔子对数之和。
第一个月和第二个月的兔子对数是1
f(n) = f(n-1) + f(n-2) n>=3
f(3) = f(3-1) + f(3-2)
f(4) = f(4-1) + f(4-2)
上述规律我们可以使用数组结构来实现:
分析:
int[] arr = new int[20];
arr[0] = 1;//表示第一个月 数组索引从0开始
arr[1] = 1;//表示第二个月 数组索引从0开始
arr[2] = arr[0] + arr[1];// arr[2] = arr[2-1]+arr[2-2]
arr[3] = arr[1] + arr[2];// arr[3] = arr[3-1] + arr[3-2]
arr[4] = arr[2] + arr[3];
...
*/
//代码:
public class Test4 {
public static void main(String[] args) {
// 定义数组
int[] arr = new int[20];
// 初始化第一个月和第二个月的兔子对数
arr[0] = 1;
arr[1] = 1;
// 月份从第三个月开始,下标从2开始
for (int n = 2; n < arr.length; n++) {
arr[n] = arr[n - 2] + arr[n - 1];
}
System.out.println("第二十个月的时候的兔子对数是:" + arr[19]);
}
}