1、什麼是斐波那契數列?
斐波那契數列(fibonacci sequence),又稱**分割數列、因數學家萊昂納多·斐波那契(leonardoda fibonacci)以兔子繁殖為例子而引入,故又稱為「兔子數列」,指的是這樣乙個數列:0、1、1、2、3、5、8、13、21、34、……斐波那契數列由 0 和 1 開始,之後的斐波那契數列係數由之前的兩數相加得出
2、斐波那契的神奇之處
也許你覺得,這麼一串數有什麼用,我平常也用不到,但實際上,很多地方都有斐波那契數列的影子。
比如,我開篇提到的「兔子數列」。假設一開始有兩隻兔子,一公一母,兩個月後開始繁殖,一對兔子每個月能且只能生出一對小兔子來,假設兔子都不會死亡,那麼一年之後可以繁殖多少對兔子?
分析:第乙個月和第二個月,兔子沒有繁殖能力,所以是一對;
第三個月,兔子有了繁殖能力,生下了一對小兔子,現在兔子是兩對;
第四個月,大兔子依舊可以生下一對小兔子,由於現在小兔子還未成年,沒有繁殖能力,所以,現在兔子是三對;
四個月後,小兔子長大了成為了小老兔子,可以和大老兔子一起繁殖,這時候就擁有了五對兔子;
……以此類推我就得到了這樣一串數:
1,1,2,3,5,8,13,21…
[(1+√5)/2]^n /√5 - [(1-√5)/2]^n /√5 【√5表示根號5】1÷1=1,1÷2=0.5,2÷3=0.666…,3÷5=0.6,5÷8=0.625,55÷89=0.617977……
144÷233=0.618025…46368÷75025=0.6180339886……
當而且當n趨向於無窮大時,前一項與後一項的比值越來越逼近**分割0.618
**:
執行結果:def
fibo
(n):
"""遞迴函式實現斐波那契數列"""
if n ==
1or n ==2:
return
1else
:return fibo(n-1)
+ fibo(n -2)
if __name__ ==
'__main__'
: n =
int(
input
("請輸入數列的項數:"))
res = fibo(n)
(res)
請輸入數列的項數:9
34
n =
int(
input
("請輸入數列的項數:"))
fibo =
[x[0
]for x in
[(a[i][0
][a[i][1
], a[i][0
]+a[i][1
]]))
for a in([
[1,1
]],)
for i in
range
(n)]
(fibo)
python 遞迴 斐波那契
什麼是遞迴演算法?函式自己呼叫自己本身 本質上return返回的時候,總是把乙個引數傳入到自己函式本身,讓函式反覆呼叫下去 遞迴有何特點?必有乙個結束條件 沒有結束條件,遞迴就沒有任何意義,python中預設只能999層遞迴 遞迴過多棧溢位,報錯 效率不高 相對而言,對於正向遞迴,遞迴次數和迴圈次數...
遞迴實現斐波那契數列
斐波那契數列 f 1 1,f 2 1,f n f n 1 f n 2 n 3,n n package com.algorithm.tiger.recursion 遞迴和非遞迴方法實現斐波那契數列 斐波那契數列 f 1 1,f 2 1,f n f n 1 f n 2 n 3,n n descripti...
斐波那契數列遞迴實現
什麼是fibnacci數列?斐波那契數列 fibonacci sequence 又稱 分割數列 因數學家萊昂納多 斐波那契 leonardoda fibonacci 以兔子繁殖為例子而引入,故又稱為 兔子數列 指的是這樣乙個數列 0 1 1 2 3 5 8 13 21 34 在數學上與 分割的關係 ...