国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

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

Reducto / 1005人閱讀

摘要:斐波那契數(shù)列當(dāng)年,典型的遞歸題目,斐波那契數(shù)列還記得嗎當(dāng)然為了程序健壯性,加上兄弟輸入正整數(shù)哈兄弟別輸入或負(fù)數(shù)呀兄弟,超過(guò)了最大遞歸深度是的,無(wú)論時(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("兄弟,超過(guò)了最大遞歸深度"

是的,無(wú)論時(shí)間還是空間復(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項(xiàng)
由于前兩項(xiàng)都為1,所以要少兩項(xiàng),為range(2, n)(要循環(huán)n-2次)

a, b = b, a+b這里你也許也有困惑,我簡(jiǎn)單說(shuō)說(shuō),一般Python解釋器會(huì)將逗號(hào)分隔的變量直接看做一個(gè)元組,
又因?yàn)椋忉屍飨葓?zhí)行等式右邊的,所以,這樣相當(dāng)于元組拆包

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

楊輝三角

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


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

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)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/45235.html

相關(guān)文章

  • Python高級(jí)語(yǔ)法之:一篇文章了解yield與Generator生成器

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

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

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

    gekylin 評(píng)論0 收藏0
  • Function類型

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

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

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

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

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

    superw 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<