實(shí)現(xiàn)fibonacci序列的5種Python方式

看到一篇介紹python實(shí)現(xiàn)fibonacci的計(jì)算方式,覺(jué)得甚是有趣糊秆,相信絕大多數(shù)人最初開(kāi)始學(xué)習(xí)編程的時(shí)候伍纫,都是用的遞歸實(shí)現(xiàn),即以下的示例2;然后了解掌握記憶術(shù),即示例4和5,python中的記憶術(shù)可以用裝飾器實(shí)現(xiàn)配并,或者functools里面的lru_cache函數(shù)實(shí)現(xiàn)嫉髓;然后才是動(dòng)態(tài)規(guī)劃的示例1梧油;學(xué)習(xí)到了Python之后,才知道可以用生成器實(shí)現(xiàn)类少,即示例3。

第六個(gè)使用標(biāo)準(zhǔn)庫(kù)的方法是我自己加的残吩,這個(gè)方法要注意使用紧唱,可能會(huì)有緩存保存,如果有必要需要清除铜犬。

## Example 1: Using looping technique
def fib(n):
 a,b = 1,1
 for i in range(n-1):
  a,b = b,a+b
 return a
print fib(5)
 
## Example 2: Using recursion
def fibR(n):
 if n==1 or n==2:
  return 1
 return fibR(n-1)+fibR(n-2)
print fibR(5)
 
## Example 3: Using generators
a,b = 0,1
def fibI():
 global a,b
 while True:
  a,b = b, a+b
  yield a
f=fibI()
f.next()
f.next()
f.next()
f.next()
print f.next()
 
## Example 4: Using memoization
def memoize(fn, arg):
 memo = {}
 if arg not in memo:
  memo[arg] = fn(arg)
  return memo[arg]
 
## fib() as written in example 1.
fibm = memoize(fib,5)
print fibm
 
## Example 5: Using memoization as decorator
class Memoize:
 def __init__(self, fn):
  self.fn = fn
  self.memo = {}
 def __call__(self, arg):
  if arg not in self.memo:
   self.memo[arg] = self.fn(arg)
   return self.memo[arg]
 
@Memoize
def fib(n):
 a,b = 1,1
 for i in range(n-1):
  a,b = b,a+b
 return a
print fib(5)

# Example6: using functools's lru_cache
from functools import lru_cache
@lru_cache(maxsize=None)
def fib(n):
       if n < 2:
            return n
        else:
            return fib(n-1) + fib(n-2)

下面是對(duì)于以上算法的總結(jié):
https://technobeans.com/2012/04/19/5-ways-of-fibonacci-in-python-best-way/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末呐粘,一起剝皮案震驚了整個(gè)濱河市痘儡,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,744評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件茬底,死亡現(xiàn)場(chǎng)離奇詭異忙厌,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門呵哨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)挨务,“玉大人丁侄,你說(shuō)我怎么就攤上這事劈猿。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,105評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵怠堪,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我粟矿,道長(zhǎng)凰棉,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,242評(píng)論 1 292
  • 正文 為了忘掉前任撒犀,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘或舞。我一直安慰自己荆姆,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,269評(píng)論 6 389
  • 文/花漫 我一把揭開(kāi)白布胆筒。 她就那樣靜靜地躺著,像睡著了一般诈豌。 火紅的嫁衣襯著肌膚如雪矫渔。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,215評(píng)論 1 299
  • 那天送膳,我揣著相機(jī)與錄音员魏,去河邊找鬼叠聋。 笑死碌补,一個(gè)胖子當(dāng)著我的面吹牛虏束,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播厦章,決...
    沈念sama閱讀 40,096評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼镇匀,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了袜啃?” 一聲冷哼從身側(cè)響起汗侵,我...
    開(kāi)封第一講書(shū)人閱讀 38,939評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎群发,沒(méi)想到半個(gè)月后晰韵,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,354評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡熟妓,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,573評(píng)論 2 333
  • 正文 我和宋清朗相戀三年雪猪,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片起愈。...
    茶點(diǎn)故事閱讀 39,745評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡只恨,死狀恐怖译仗,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情坤次,我是刑警寧澤古劲,帶...
    沈念sama閱讀 35,448評(píng)論 5 344
  • 正文 年R本政府宣布,位于F島的核電站缰猴,受9級(jí)特大地震影響产艾,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜滑绒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,048評(píng)論 3 327
  • 文/蒙蒙 一闷堡、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧疑故,春花似錦杠览、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,683評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至钦铁,卻和暖如春软舌,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背牛曹。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,838評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工佛点, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人黎比。 一個(gè)月前我還...
    沈念sama閱讀 47,776評(píng)論 2 369
  • 正文 我出身青樓超营,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親阅虫。 傳聞我的和親對(duì)象是個(gè)殘疾皇子演闭,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,652評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,082評(píng)論 25 707
  • 此時(shí)米碰,太陽(yáng)直射點(diǎn)已經(jīng)越過(guò)赤道一點(diǎn)點(diǎn)想回歸線移動(dòng)。上午的陽(yáng)光透過(guò)六樓的窗戶射進(jìn)來(lái)溫暖的刺眼可是我卻在也不知道該伏...
    菁晶京閱讀 337評(píng)論 0 0
  • 第13天 (2017.3.5)讓你的心愿成真 1.感恩妍昕帶領(lǐng)28天感恩練習(xí)躲履,眨眼之間感恩練習(xí)第13天了,今天的標(biāo)...
    白宜可閱讀 2,264評(píng)論 1 4
  • 鹿山公園石山水流歌 ◎山田耕夫 傾夢(mèng)眼前空 那一刻響起水流聲 多少事壘石筑成古今句 我來(lái)獨(dú)坐領(lǐng)悟 命中命遠(yuǎn)離喧氣 ...
    朝花夕拾杯中酒123閱讀 278評(píng)論 0 3
  • 定萍 君為定海針聊闯, 吾為浮萍水工猜。 委身懷中繞, 含情脈脈深菱蔬。 言語(yǔ)三片過(guò)篷帅, 意深切莫追史侣。 2017年9月11日(m...
    m萌的原創(chuàng)小窩閱讀 130評(píng)論 0 3