首先,我們來了解一下斐波那契,斐波那契的發明者是義大利數學家昂納多·斐波那契
我們拿兔子繁殖的例子來學習斐波那契~
資料統計表如下圖所示:
迭代實現:
def fab(n):
n1 = 1
n2 = 1
n3 = 1
if n < 1:
print('輸入有誤!')
return -1
while (n-2) > 0:
n3 = n1 + n2
n1=n2
n2=n3
n -= 1
return n3
result = fab(35)
if result != -1:
print('總共有%d對小兔崽子誕生!'% result)
遞迴實現:
def fab(n):
if n < 1:
print('輸入有誤!')
return -1
if n == 1 or n == 2:
return -1
else:
return fab(n-1) + fab(n-2)
result = fab(20)
if result != -1:
print('總共有%d隊小兔崽子誕生!'% result)
來看一下上面遞迴實現的原理:
注意一點,遞迴如果使用不當,效率會很低。我們將上面例子中的fab()引數變大一點,會發現:用迭代**實現基本是毫秒級的,而用遞迴實現就要考驗計算機的cpu能力了(n秒~n分鐘不等),座椅不支援大家所有問題都是用遞迴來解決
課時23 YUM軟體管理
linux linux 入門基礎 1 rpm軟體包形式管理軟體雖然方便,但是需要手工解決軟體包的依賴關係,很多時候安裝乙個軟體需要首先安裝1個或多個 有時多達上百個 其他軟體,手工解決時很複雜。使用yum可以解決這個問題。2 yum yellowdog updater modified 是乙個rpm...
課時24 遞迴 漢諾塔
目錄 一 漢諾塔 二 課時24課後習題及答案 一 漢諾塔 漢諾塔 漢諾塔 又稱河內塔 問題是源於印度乙個古老傳說的益智玩具。大梵天創造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞著64片 圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。並且規定,在小圓盤上...
八 初識python 函式作用域(課時23)
x 2def func y 20print x print y func 結果為2,20,x為全部變數,可以在區域性使用。print y nameerror name y is not defined,y為區域性變數,無法在全域性使用。def improve global f f 100 g 200...