摘要:斐波那契數(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
摘要:與子生成器是開始引入的新特性。我們把這種一個(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)單的...
摘要:內(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)...
摘要:類型類型是的引用類型之一通過(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ì)象的形式存在...
摘要:函數(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操作...
摘要:函數(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操作...
閱讀 2069·2021-11-16 11:45
閱讀 569·2021-11-04 16:12
閱讀 1369·2021-10-08 10:22
閱讀 840·2021-09-23 11:52
閱讀 4128·2021-09-22 15:47
閱讀 3513·2021-09-22 15:07
閱讀 486·2021-09-03 10:28
閱讀 1730·2021-09-02 15:21