python 解決斐波那契數列

2021-08-19 03:17:32 字數 1057 閱讀 9212

斐波那契數列:以澳大利亞兔子繁殖的問題而引入的數列,也稱為『兔子數列』

斐波那契的具體表現形式是:1,1,2,3,5,8,13,21......

其通項公式為:f(n) = f(n-1)+f(n-2)

從其通項公式來看,有點類似於python中的遞迴函式,先試著使用遞迴函式解決斐波那契數列

def fibo_sequnece(n):

"""定義乙個斐波那契數列,求第n項的數值"""

if n in (1, 2):

return 1

else:

return fibo_sequnece(n-1)+fibo_sequnece(n-2)

這個函式就是直接利用斐波那契數列的通項公式進行求解,當n>3的時候,函式遞迴求解數值

還有一種遞迴的形式,在函式傳參的時候,直接指定斐波的第一項和第二項的數值,然後直接遞迴乙個函式

def fibo_sequence(n, first, second):

if n == 1:

return first

else:

return fibo_sequence(n-1, second, first+second)

再有一種就是求斐波那契數列的前n項的所有數值,利用生成器函式來實現

所謂生成器函式,就是包含yeild關鍵字的函式,通俗一點說,當函式被喚醒的時候執行,遇到yield關鍵字就停下並返回yield右邊的數值,當函式被再次喚醒的時候,接著前面的繼續執行

def fibo_sequence(n):

"""生成器函式執行斐波那契數列前n項"""

first = 1

second = 1

for i in range(n):

yield first

first, second = second, first +second

最後,關於斐波那契數列的第一項到底是0還是1,這個各有各的說法,但是不影響斐波那契數列的特點,如果認為第一項是0的話,那麼第一種遞迴函式可能就要稍加修改,但原理還是一樣的

斐波那契數列 斐波那契數列python實現

斐波那契數列 fibonacci sequence 又稱 分割數列 因數學家列昂納多 斐波那契 leonardoda fibonacci 以兔子繁殖為例子而引入,故又稱為 兔子數列 指的是這樣乙個數列 1 1 2 3 5 8 13 21 34 在數學上,斐波納契數列以如下被以遞推的方法定義 f 1 ...

python 斐波那契數列

用python寫斐波那契數列當然大家都寫的出來。當時如果用一行 寫呢。本來沒有打算用一行 寫的。後來看到有用一行 寫階乘的。reduce lambda x,y x y,i for i in range 1,n 1 當然在這之前需要 from functools import 好吧,如果你願意,就算兩...

python斐波那契數列

學習過python基礎語法,我們嘗試做乙個簡單的斐波那契數列。斐波納契數列 兩個元素的總和確定了下乙個數 a,b 0,1 while b 10 print b a,b b,a b執行以上程式,輸出 112 358end關鍵字 關鍵字end可以用於將結果輸出到同一行,或者在輸出的末尾新增不同的字元,例...