成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

提升Python效率——用循環(huán)機(jī)制代替遞歸函數(shù)

Reducto / 1015人閱讀

摘要:斐波那契數(shù)列當(dāng)年,典型的遞歸題目,斐波那契數(shù)列還記得嗎當(dāng)然為了程序健壯性,加上兄弟輸入正整數(shù)哈兄弟別輸入或負(fù)數(shù)呀兄弟,超過了最大遞歸深度是的,無論時間還是空間復(fù)雜度,遞歸真的是不太好使哈這是遞歸的寫法我稍微解釋三點(diǎn)為啥是,因?yàn)?,斐?/p>

斐波那契數(shù)列

當(dāng)年,典型的遞歸題目,斐波那契數(shù)列還記得嗎?

def fib(n):
    if n==1 or n==2:
        return 1
    else:
        return fib(n-1)+fib(n-2)

當(dāng)然, 為了程序健壯性,加上try...except...

def fib(n):
    if isinstance(n, int):
        print("兄弟,輸入正整數(shù)哈")
        return
    
    try:
        if n==1 or n==2:
            return 1
        elif n <= 0:
            print("兄弟別輸入0或負(fù)數(shù)呀")
        else:
            return fib(n-1)+fib(n-2)
    except RecursionError:
        print("兄弟,超過了最大遞歸深度"

是的,無論時間還是空間復(fù)雜度,遞歸真的是不太好使哈!這是遞歸的寫法:

def fib(n):
    if n==1 or n == 2:
        return 1
    a, b = 1, 1
    for i in range(2, n):
        a, b = b, a+b
    return b

我稍微解釋三點(diǎn):

為啥是range(2, n),因?yàn)椋巢瞧鯏?shù)列從1開始,所以fib(n)就是數(shù)列的第n
由于前兩項都為1,所以要少兩項,為range(2, n)(要循環(huán)n-2次)

a, b = b, a+b這里你也許也有困惑,我簡單說說,一般Python解釋器會將逗號分隔的變量直接看做一個元組,
又因?yàn)?,解釋器先?zhí)行等式右邊的,所以,這樣相當(dāng)于元組拆包

a, b = b, a+b這句話的精髓在于,在等式右邊將b視為fib(n-2),將a+b視為fib(n-1)

楊輝三角

寫一個函數(shù),求楊輝三角形,第i行,第j列的值
fun(0, 0) = 1
fun(5, 2) = 10


同樣,先寫遞歸寫法(我這里不考慮特殊情況了,時間有限):

def YH_tri(a, b):
    if a == b or b == 0:
        return 1
    else:
        return YH_tri(a-1, b)+YH_tri(a-1, b-1)

老鐵們自己先想想該怎么寫??

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/45235.html

相關(guān)文章

  • Python高級語法之:一篇文章了解yield與Generator生成器

    摘要:與子生成器是開始引入的新特性。我們把這種一個生成器中調(diào)用的另一個生成器叫做子生成器,而這個子生成器由關(guān)鍵字生成。由于子生成器很常用,所以引入了新的語法來簡化這個代碼。下次,會繼續(xù)對之前的結(jié)果進(jìn)行乘方,直到結(jié)果超過為止。 Python高級語法中,由一個yield關(guān)鍵詞生成的generator生成器,是精髓中的精髓。它雖然比裝飾器、魔法方法更難懂,但是它強(qiáng)大到我們難以想象的地步:小到簡單的...

    kamushin233 評論0 收藏0
  • PHP的性能優(yōu)化方法總結(jié)

    摘要:內(nèi)置函數(shù)的性能優(yōu)劣。產(chǎn)生額外開銷的錯誤抑制符號,最好別用不管是性能優(yōu)化和項目的健壯性等方面。在方法中遞增局部變量,速度是最快的。類似的方法調(diào)用所花費(fèi)的時間接近于次的局部變量遞增操作。 什么情況之下,會遇到PHP性能問題?1:PHP語法使用不恰當(dāng)。2:使用PHP語言做了它不擅長的事情。3:使用PHP語言連接的服務(wù)不給力。4:PHP自身的短板(PHP自身做不了的事情)。5:我們也不知道的問...

    gekylin 評論0 收藏0
  • Function類型

    摘要:類型類型是的引用類型之一通過類型創(chuàng)建對象在中函數(shù)也以對象的形式存在每個函數(shù)都是一個對象構(gòu)造函數(shù)函數(shù)除了用函數(shù)定義語句和字面量表達(dá)式兩種方式定義之外還可以通過類型進(jìn)行定義函數(shù)的參數(shù)和函數(shù)體都是以字符串形式傳遞給的通過類型定義函數(shù)的效率遠(yuǎn)不如函 Function類型 Function類型是JS的引用類型之一 通過Function類型創(chuàng)建Function對象在JS中 函數(shù)也以對象的形式存在...

    jackzou 評論0 收藏0
  • 一次阿里面試后對函數(shù)本質(zhì)的理解

    摘要:函數(shù)使用函數(shù)的使用主要有兩種閉包閉包的本質(zhì)是對共享變量的操作,典型運(yùn)用是觀察者模式備忘錄模式普通封裝,復(fù)用。參考阿里博客你可能不知道的事基礎(chǔ)篇總結(jié)要寫好一個項目需要兼容,性能,安全等。 一次阿里面試后對函數(shù)本質(zhì)的理解 寫在前面 環(huán)境:阿里的在線編程系統(tǒng)允許面試官在線考察面試者的編程能力. 考點(diǎn):編程和理論. 編程:分為技術(shù)自驅(qū)力、異步操作、編程風(fēng)格(顆粒小)、變量作用域、DOM操作...

    liuyix 評論0 收藏0
  • 一次阿里面試后對函數(shù)本質(zhì)的理解

    摘要:函數(shù)使用函數(shù)的使用主要有兩種閉包閉包的本質(zhì)是對共享變量的操作,典型運(yùn)用是觀察者模式備忘錄模式普通封裝,復(fù)用。參考阿里博客你可能不知道的事基礎(chǔ)篇總結(jié)要寫好一個項目需要兼容,性能,安全等。 一次阿里面試后對函數(shù)本質(zhì)的理解 寫在前面 環(huán)境:阿里的在線編程系統(tǒng)允許面試官在線考察面試者的編程能力. 考點(diǎn):編程和理論. 編程:分為技術(shù)自驅(qū)力、異步操作、編程風(fēng)格(顆粒小)、變量作用域、DOM操作...

    superw 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<