python實現(xiàn)斐波那契數(shù)列的方法示例
介紹
斐波那契數(shù)列,又稱黃金分割數(shù)列,指的是這樣一個數(shù)列:0、1、1、2、3、5、8、13、21、……在數(shù)學(xué)上,斐波納契數(shù)列以如下遞歸的方法定義:
F(0)=0,F(xiàn)(1)=1,F(xiàn)(n)=F(n-1)+F(n-2)(n≥2,n∈N*)
。
1. 元組實現(xiàn)
fibs = [0, 1] for i in range(8): fibs.append(fibs[-2] + fibs[-1])
這能得到一個在指定范圍內(nèi)的斐波那契數(shù)列的列表。
2. 迭代器實現(xiàn)
class Fibs: def __init__(self): self.a = 0 self.b = 1 def next(self): self.a, self.b = self.b, self.a + self.b return self.a def __iter__(self): return self
這將得到一個無窮的數(shù)列,可以采用如下方式訪問:
fibs = Fibs() for f in fibs: if f > 1000: print f break else: print f
3. 通過定制類實現(xiàn)
class Fib(object): def __getitem__(self, n): if isinstance(n, int): a, b = 1, 1 for x in range(n): a, b = b, a + b return a elif isinstance(n, slice): start = n.start stop = n.stop a, b = 1, 1 L = [] for x in range(stop): if x >= start: L.append(a) a, b = b, a + b return L else: raise TypeError("Fib indices must be integers")
這樣可以得到一個類似于序列的數(shù)據(jù)結(jié)構(gòu),可以通過下標(biāo)來訪問數(shù)據(jù):
f = Fib() print f[0:5] print f[:10]
4.Python實現(xiàn)比較簡易的斐波那契數(shù)列示例
先放一個斐波那契數(shù)列出來瞧瞧…
0 1 1 2 3 5 8 13 21 34 55 89 144 233...
首先給頭兩個變量賦值:
i, j = 0, 1
當(dāng)然也可以這樣寫:
i = 0 j = 1
接著定個范圍,就10000之內(nèi)好了:
while i < 10000:
然后在while語句中輸出i并設(shè)計邏輯:
print i, i, j = j, i+j
在這里需要注意:“i, j = i, i+j
”這條代碼不能寫成如下所示:
i = j j = i+j
如果寫成這樣,j就不是前兩位相加的值,而是已經(jīng)被j賦過值的i和j相加的值,這樣的話輸出的數(shù)列會如下所示:
0 1 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192
正確的整片代碼如下所示:
i, j = 0, 1 while i < 10000: print i, i, j = j, i+j
最后展示運行結(jié)果:
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765
總結(jié)
以上就是關(guān)于利用Python實現(xiàn)斐波那契數(shù)列的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。
相關(guān)文章
使用django的objects.filter()方法匹配多個關(guān)鍵字的方法
今天小編就為大家分享一篇使用django的objects.filter()方法匹配多個關(guān)鍵字的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07pytorch模型保存到本地后,如何實現(xiàn)繼續(xù)訓(xùn)練
在PyTorch中,保存和加載模型對于實現(xiàn)模型訓(xùn)練的中斷和恢復(fù)非常有用,保存模型主要有兩種方式:一是保存整個模型包括結(jié)構(gòu)與參數(shù);二是僅保存模型的state_dict,加載模型時,若保存了整個模型則直接加載,若僅保存了state_dict,則需先實例化模型結(jié)構(gòu)后加載2024-09-09Python爬取求職網(wǎng)requests庫和BeautifulSoup庫使用詳解
這篇文章主要為大家介紹了Python爬取求職網(wǎng)及其他網(wǎng)頁時requests庫和BeautifulSoup庫的使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-10-10python中pip安裝庫時出現(xiàn)Read?timed?out解決辦法
最近需要使用pip庫,安裝的時候出現(xiàn)問題,本文就詳細的介紹一下python中pip安裝庫時出現(xiàn)Read?timed?out解決辦法,具有一定的參考價值,感興趣的可以了解一下2022-03-03python實現(xiàn)基于SVM手寫數(shù)字識別功能
這篇文章主要為大家詳細介紹了python實現(xiàn)基于SVM手寫數(shù)字識別功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-01-01