python爬樓梯遞迴 爬樓梯(Python3)

2021-10-11 15:07:55 字數 774 閱讀 8567

假設你正在爬樓梯。需要 n 階你才能到達樓頂。每次你可以爬 1 或 2 個台階。你有多少種不同的方法可以爬到樓頂呢?

注意:給定 n 是乙個正整數。

示例 1:

輸入: 2

輸出: 2

解釋: 有兩種方法可以爬到樓頂。1 階 + 1 階 和 2 階

解題思路:

實現了兩種方法,但是第一種超出時間限制(。ì _ í。),因為遞迴的時候方法實際計算了兩次。兩種方法都使用了動態規劃思想,比如對於爬10階樓梯,我們最後一步爬上第10階只會有兩種情況,一種是從9階樓梯爬1個台階,一種是從8階台階爬2兩個台階上來。所以10階台階問題可以劃分為爬9階和8階兩個子問題,一直遞迴劃分到只剩2階(2種方法)和1階(一種方法)。

超出時間限制的**:

class solution:

def climbstairs(self, n: int) -> int:

if n<=2:

if n==2:

return 2

else:

return 1

else:

return self.climbstairs(n-1)+self.climbstairs(n-2)

第二種方法(沒有重複計算):

class solution:

def climbstairs(self, n: int) -> int:

m = [0,1,2]

for i in range(3,n+1):

return m[n]

時間與空間複雜度如下:

python爬樓梯演算法 爬樓梯(Python3)

假設你正在爬樓梯。需要 n 階你才能到達樓頂。每次你可以爬 1 或 2 個台階。你有多少種不同的方法可以爬到樓頂呢?注意 給定 n 是乙個正整數。示例 1 輸入 2 輸出 2 解釋 有兩種方法可以爬到樓頂。1 階 1 階 和 2 階 解題思路 實現了兩種方法,但是第一種超出時間限制 因為遞迴的時候方...

爬樓梯(遞迴)

4017 爬樓梯描述 樹老師爬樓梯,他可以每次走1級或者2級,輸入樓梯的級數,求不同的走法數。例如 樓梯一共有3級,他可以每次都走一級,或者第一次走一級,第二次走兩級也可以第一次走兩級,第二次走一級,一共3種方法。輸入輸入包含若干行,每行包含乙個正整數n,代表樓梯級數,1 n 30 輸出不同的走法數...

爬樓梯 遞迴

題目要求 乙個人爬樓梯,每次可以走一級或者兩級,輸入樓梯級數,求不同的走法數。輸入輸出格式 輸入包含若干行,每行包含乙個正整數n n 30 代表樓梯級數,輸出對應的走法數,每個一行。樣例輸入 58 10樣例輸出 834 89分析 用遞迴將問題分解為規模更小的子問題進行求解。n級台階的走法數 第一步走...