Fibonacci數列
1202年,義大利數學家斐波那契出版了他的「算盤全書」。
他在書中提出了一個關於兔子繁殖的問題:
如果一對兔子每月能生一對小兔(一雄一雌),而每對小兔
在牠出生後的第三個月裡,又能開始生一對小兔,假定在
不發生死亡的情況下,由一對出生的小兔開始,50個月後會有
多少對兔子?
在第一個月時,只有一對小兔子,過了一個月,那對兔子成熟
了,在第三個月時便生下一對小兔子,這時有兩對兔子。再過
多一個月,成熟的兔子再生一對小兔子,而另一對小兔子長大
,有三對小兔子。如此推算下去,我們便發現一個規律:
時間(月) | 初生兔子(對) | 成熟兔子(對) | 兔子總數(對) |
1 | 1 | 0 | 1 |
2 | 0 | 1 | 1 |
3 | 1 | 1 | 2 |
4 | 1 | 2 | 3 |
5 | 2 | 3 | 5 |
6 | 3 | 5 | 8 |
7 | 5 | 8 | 13 |
8 | 8 | 13 | 21 |
9 | 13 | 21 | 34 |
10 | 21 | 34 | 55 |
由此可知,從第一個月開始以後每個月的兔子總數是:
1,1,2,3,5,8,13,21,34,55,89,144,233…
若把上述數列繼續寫下去,得到的數列便稱為斐波那契數列。
數列中每個數便是前兩個數之和,而數列的最初兩個數都是1。
若設 F0=1, F1=1, F2=2, F3=3, F4=5, F5=8, F6=13...
則:當n>1時,Fn+2 = Fn+1 + Fn,而 F0=F1=1。
- class T {
- public static void main(String[] args) {
- System.out.println(fibonacci(3));
- }
- static long fibonacci(int n) {
- if (n == 1 || n == 2)
- return 1;
- else
- return fibonacci(n - 1) + fibonacci(n - 2);
- }
- }