題目:一棟樓有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:
'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:
'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內數字的連續相乘的運算,想必大家都做過連加問題,倆者的解決思路其實很相近。但是要了解遞迴的思路實現會更加簡潔。既然階乘就是連續乘積,那麼我們可以設計乙個...