2018-10-23
閱讀量:
1001
n步能到達(dá)頂端。每次可以爬一步或兩步,有多少方法?
python編程 你正在爬樓梯的情況。需要n個步驟才能到達(dá)頂端。每次你可以爬上1或2步。有多少種不同的方法可以爬到頂端?完全沒思路,這個要怎么做?
首先可以假設(shè)有y種爬到頂端的方法,則 y與n之間存在一種函數(shù)映射 y = f(n)
已知
當(dāng) n = 1 則 y = 1
當(dāng) n = 2 則 y = 2
當(dāng) n>2時 第一步驟可以是走一步或者兩步。
當(dāng)?shù)谝徊襟E走一步時 有f(n-1)中方法
當(dāng)?shù)谝徊襟E走兩步時 有f(n-2)中方法
則f(n)應(yīng)當(dāng)是f(n-1) 與 f(n-2)的和
既
當(dāng) n >2 則 y = f(n-1) + f(n-2)
這個題目考察的是對遞歸函數(shù)的熟悉程度,遞歸函數(shù)的優(yōu)點(diǎn)是邏輯復(fù)雜的問題簡單化,代碼簡練。實(shí)現(xiàn)代碼如下
def y(n):
if n == 1:
return 1
elif n == 2:
return 2
else:
return y(n-1)+y(n-2)
在函數(shù)內(nèi)部,可以調(diào)用其他函數(shù)。如果一個函數(shù)在內(nèi)部調(diào)用自身本身,這個函數(shù)就是遞歸函數(shù),遞歸還要有停止條件是要收斂的。遞歸函數(shù)的優(yōu)點(diǎn)是定義簡單,邏輯清晰。理論上,所有的遞歸函數(shù)都可以寫成循環(huán)的方式,但循環(huán)的邏輯不如遞歸清晰。






評論(0)


暫無數(shù)據(jù)
推薦帖子
0條評論
0條評論
0條評論
0條評論