python實(shí)現(xiàn)斐波那契數(shù)列的方法示例
介紹
斐波那契數(shù)列,又稱黃金分割數(shù)列,指的是這樣一個(gè)數(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. 元組實(shí)現(xiàn)
fibs = [0, 1] for i in range(8): fibs.append(fibs[-2] + fibs[-1])
這能得到一個(gè)在指定范圍內(nèi)的斐波那契數(shù)列的列表。
2. 迭代器實(shí)現(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
這將得到一個(gè)無窮的數(shù)列,可以采用如下方式訪問:
fibs = Fibs() for f in fibs: if f > 1000: print f break else: print f
3. 通過定制類實(shí)現(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")
這樣可以得到一個(gè)類似于序列的數(shù)據(jù)結(jié)構(gòu),可以通過下標(biāo)來訪問數(shù)據(jù):
f = Fib() print f[0:5] print f[:10]
4.Python實(shí)現(xiàn)比較簡易的斐波那契數(shù)列示例
先放一個(gè)斐波那契數(shù)列出來瞧瞧…
0 1 1 2 3 5 8 13 21 34 55 89 144 233...
首先給頭兩個(gè)變量賦值:
i, j = 0, 1
當(dāng)然也可以這樣寫:
i = 0 j = 1
接著定個(gè)范圍,就10000之內(nèi)好了:
while i < 10000:
然后在while語句中輸出i并設(shè)計(jì)邏輯:
print i, i, j = j, i+j
在這里需要注意:“i, j = i, i+j
”這條代碼不能寫成如下所示:
i = j j = i+j
如果寫成這樣,j就不是前兩位相加的值,而是已經(jīng)被j賦過值的i和j相加的值,這樣的話輸出的數(shù)列會(huì)如下所示:
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
最后展示運(yùn)行結(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實(shí)現(xiàn)斐波那契數(shù)列的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。
相關(guān)文章
Python反向傳播實(shí)現(xiàn)線性回歸步驟詳細(xì)講解
回歸是監(jiān)督學(xué)習(xí)的一個(gè)重要問題,回歸用于預(yù)測(cè)輸入變量和輸出變量之間的關(guān)系,特別是當(dāng)輸入變量的值發(fā)生變化時(shí),輸出變量的值也隨之發(fā)生變化?;貧w模型正是表示從輸入變量到輸出變量之間映射的函數(shù)2022-10-10使用django的objects.filter()方法匹配多個(gè)關(guān)鍵字的方法
今天小編就為大家分享一篇使用django的objects.filter()方法匹配多個(gè)關(guān)鍵字的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-07-07pytorch模型保存到本地后,如何實(shí)現(xiàn)繼續(xù)訓(xùn)練
在PyTorch中,保存和加載模型對(duì)于實(shí)現(xiàn)模型訓(xùn)練的中斷和恢復(fù)非常有用,保存模型主要有兩種方式:一是保存整個(gè)模型包括結(jié)構(gòu)與參數(shù);二是僅保存模型的state_dict,加載模型時(shí),若保存了整個(gè)模型則直接加載,若僅保存了state_dict,則需先實(shí)例化模型結(jié)構(gòu)后加載2024-09-09Python爬取求職網(wǎng)requests庫和BeautifulSoup庫使用詳解
這篇文章主要為大家介紹了Python爬取求職網(wǎng)及其他網(wǎng)頁時(shí)requests庫和BeautifulSoup庫的使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-10-10PyCharm連接遠(yuǎn)程服務(wù)器配置的全過程
這篇文章主要介紹了PyCharm連接遠(yuǎn)程服務(wù)器配置的全過程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06python中pip安裝庫時(shí)出現(xiàn)Read?timed?out解決辦法
最近需要使用pip庫,安裝的時(shí)候出現(xiàn)問題,本文就詳細(xì)的介紹一下python中pip安裝庫時(shí)出現(xiàn)Read?timed?out解決辦法,具有一定的參考價(jià)值,感興趣的可以了解一下2022-03-03python實(shí)現(xiàn)基于SVM手寫數(shù)字識(shí)別功能
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)基于SVM手寫數(shù)字識(shí)別功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01python 文件的基本操作 菜中菜功能的實(shí)例代碼
這篇文章主要介紹了python 文件的基本操作 菜中菜功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2019-07-07