專案1 如何生成斐波那契數列 python實現

2021-08-21 14:30:53 字數 1280 閱讀 7190

斐波那契(fibonacci)數列是乙個非常簡單的遞迴數列,除第乙個和第二個數外,任意乙個數都可由前兩個數相加得到。用電腦程式輸出斐波那契數列的前 n 個數是乙個非常簡單的問題,許多初學者都可以輕易寫出如下函式:

簡單輸出斐波那契數列前 n 個數

# -*- coding: utf-8 -*-

#python3.5

def fab(max):

n, a, b = 0, 0, 1

while n < max:

print (b)

a, b = b, a + b

n = n + 1

執行 fab(5),我們可以得到如下輸出:

fab(5)11

235上面**簡單但復用性差,使用 yield ,僅僅把 print b 改為了 yield b。

yield 的作用就是把乙個函式變成乙個 generator,帶有 yield 的函式不再是乙個普通函式,python 直譯器會將其視為乙個 generator,呼叫 fab(5) 不會執行 fab 函式,而是返回乙個 iterable 物件!在 for 迴圈執行時,每次迴圈都會執行 fab 函式內部的**,執行到 yield b 時,fab 函式就返回乙個迭代值,下次迭代時,**從 yield b 的下一條語句繼續執行,而函式的本地變數看起來和上次中斷執行前是完全一樣的,於是函式繼續執行,直到再次遇到 yield

# -*- coding: utf-8 -*-

#python3.5

def fab(max):

n, a, b = 0, 0, 1

while n < max:

yield b

a, b = b, a + b

n = n + 1

執行 fab(5),我們這樣輸出

for n in fab(5):

print (n)11

235也可以這樣輸出:

f = fab(5)

f.next()

traceback (most recent call last):

file "", line 1, in

f.next()

attributeerror: 'generator' object has no attribute 'next'

報錯了:因為這是python2的語法,python3是下面這樣

f.next()

next(f)

out[21]: 1

next(f)

out[22]: 1

next(f)

out[23]: 2

py 斐波那契數列

usr bin python3 fibonacci series 斐波納契數列 兩個元素的總和確定了下乙個數 理解 每乙個新出現的值都是b,則原來b值成為a值。ps 注重對原有值的保留 直接解法 a,b 0,1 while b 10 print b a,b b,a b 其中 a,b b,a b 的計...

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

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

迴圈斐波那契數列 斐波那契數列應用

什麼是斐波那契數列 斐波那契數列指的是這樣乙個數列 1,1,2,3,5,8,13,21,34,55,89,144 這個數列從第3項開始,每一項都等於前兩項之和 台階問題 有一段樓梯有10級台階,規定每一步只能跨一級或兩級,要登上第10級台階有幾種不同的走法?這就是乙個斐波那契數列 登上第一級台階有一...