Python實現N階台階的走法問題

2021-08-19 07:57:58 字數 1442 閱讀 5843

題目:一棟樓有n階樓梯,兔子每次可以跳1、2或3階,問一共有多少種走法?

afanty的分析:

遇到這種求規律的問題,自己動動手推推就好,1階有幾種走法?2階有幾種走法?3階有幾種走法?4階有幾種走法?5階有幾種走法?

對吧,規律出來了!

易錯點:這不是組合問題,因為第1次走1階、第2次走2階

不同於第1次走2階、第2次走1階

下面是python的遞迴實現**,希望對你有些幫助

[python]view plain

copy

def allmethods(stairs):  

'''''

:param stairs:the  numbers of stair

:return:

'''if isinstance(stairs,int) and stairs > 0:  

basic_num =   

if stairs in basic_num.keys():  

return basic_num[stairs]  

else:  

return allmethods(stairs-1) + allmethods(stairs-2) + allmethods(stairs-3)  

else:  

print

'the num of stair is wrong'

return

false

當然也可以用非遞迴的方法來實現,下面就是基於遞推法的**:

[python]view plain

copy

def allmethod(stairs):  

'''''遞推實現

:param stairs:  the amount of stair

:return:

'''if isinstance(stairs,int) and stairs > 0:  

h1,h2,h3,n = 1,2,4,4

basic_num =   

if stairs in basic_num.keys():  

return basic_num[stairs]  

else:  

while n <= stairs:  

temp = h1  

h1 = h2  

h2 = h3  

h3 = temp + h1 + h2  

return h3  

else:  

print

'the num of stair is wrong'

return

false

好的,以上就是分別用了遞迴和遞推法實現的過程,希望對你有所幫助,謝謝

N級台階走法 演算法問題

題目 總共100級台階 任意n級都行 小明每次可選擇走1步 2步,問走完這100級台階總共有多少種走法?分析 對於台階走法 假設只有乙個台階,那麼只有一種跳法,那就是一次跳一級,f 1 1 如果有兩個台階,那麼有兩種跳法,第一種跳法是一次跳一級,第二種跳法是一次跳兩級,如果有大於2級的n級台階,那麼...

列出走樓梯或者台階的所有走法

本篇文章主要用來簡單模仿走樓梯或者台階,列出走完樓梯或者台階所有的走法。第乙個程式 給定台階數,每次走1步,2步或者3步。第二個程式 給定台階資料,每次走的最小台階數,每次走的最大台階數以及設定最多能走幾次。採用stack來實現。b 第乙個程式和執行結果如下 b 如走5階台階有如下幾種走法 第1種走...

Java實現n階階乘的計算

自然數由1 n的n個數連乘積叫作n的階乘,記作n 要求設計乙個演算法,可以根據輸入的數字計算其相應的階乘。這是乙個比較簡單的問題,所謂階乘實際就是n內數字的連續相乘的運算,想必大家都做過連加問題,倆者的解決思路其實很相近。但是要了解遞迴的思路實現會更加簡潔。既然階乘就是連續乘積,那麼我們可以設計乙個...