摘要:斐波那契數(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
摘要:與子生成器是開始引入的新特性。我們把這種一個生成器中調(diào)用的另一個生成器叫做子生成器,而這個子生成器由關(guān)鍵字生成。由于子生成器很常用,所以引入了新的語法來簡化這個代碼。下次,會繼續(xù)對之前的結(jié)果進(jìn)行乘方,直到結(jié)果超過為止。 Python高級語法中,由一個yield關(guān)鍵詞生成的generator生成器,是精髓中的精髓。它雖然比裝飾器、魔法方法更難懂,但是它強(qiáng)大到我們難以想象的地步:小到簡單的...
摘要:內(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:我們也不知道的問...
摘要:類型類型是的引用類型之一通過類型創(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ù)也以對象的形式存在...
摘要:函數(shù)使用函數(shù)的使用主要有兩種閉包閉包的本質(zhì)是對共享變量的操作,典型運(yùn)用是觀察者模式備忘錄模式普通封裝,復(fù)用。參考阿里博客你可能不知道的事基礎(chǔ)篇總結(jié)要寫好一個項目需要兼容,性能,安全等。 一次阿里面試后對函數(shù)本質(zhì)的理解 寫在前面 環(huán)境:阿里的在線編程系統(tǒng)允許面試官在線考察面試者的編程能力. 考點(diǎn):編程和理論. 編程:分為技術(shù)自驅(qū)力、異步操作、編程風(fēng)格(顆粒小)、變量作用域、DOM操作...
摘要:函數(shù)使用函數(shù)的使用主要有兩種閉包閉包的本質(zhì)是對共享變量的操作,典型運(yùn)用是觀察者模式備忘錄模式普通封裝,復(fù)用。參考阿里博客你可能不知道的事基礎(chǔ)篇總結(jié)要寫好一個項目需要兼容,性能,安全等。 一次阿里面試后對函數(shù)本質(zhì)的理解 寫在前面 環(huán)境:阿里的在線編程系統(tǒng)允許面試官在線考察面試者的編程能力. 考點(diǎn):編程和理論. 編程:分為技術(shù)自驅(qū)力、異步操作、編程風(fēng)格(顆粒小)、變量作用域、DOM操作...
閱讀 2084·2021-11-16 11:45
閱讀 582·2021-11-04 16:12
閱讀 1386·2021-10-08 10:22
閱讀 861·2021-09-23 11:52
閱讀 4147·2021-09-22 15:47
閱讀 3524·2021-09-22 15:07
閱讀 496·2021-09-03 10:28
閱讀 1742·2021-09-02 15:21