斐波那契(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級台階有幾種不同的走法?這就是乙個斐波那契數列 登上第一級台階有一...