假設一段樓梯共n(n>1)個台階,小朋友一步最多能上3個台階,那麼小朋友上這段樓梯一共有多少種方法
(此為京東2023年筆試題目)
假設n為15,從第15個台階上往回看,有3種方法可以上來(從第14個台階上一步邁1個台階上來,從第13個台階上一步邁2個台階上來,從第12個台階上一步邁3個台階上來),
同理,第14個、13個、12個台階都可以這樣推算,從而得到公式f(n) = f(n-1) + f(n-2) + f(n-3),其中n=15、14、13、...、5、4。然後就是確定這個遞迴公式的結束條件了,
第乙個台階只有1種上法,第二個台階有2種上法(一步邁2個台階上去、一步邁1個台階分兩步上去),第三個台階有4種上法
**如下
n = int(input())
a = 1
b = 2
c = 4
for i in range(n-3):
c, b, a = a+b+c, c, b
print(c)
截圖如下
(來讓小朋友把這些走法挨個走一遍......)
這裡提一下上面的
c, b, a = a+b+c, c, b
這段**的用法
這段**是先計算右邊的數值,先計算a + b + c
然後從右邊開始先將b的值賦給a,再將c的值賦給b,最後將a + b + c的值賦給c
這段**等價於
m = a + b +c
a = b
b = c
c = m
(其實我還是喜歡下面這樣寫,容易懂)
python中解決上樓梯問題
解決此類問題 需要從後往前找規律,需要使用遞迴 一次1和2兩個台階,這是乙個斐波那契數列的應用 def fun n if n 0 return error elif n 1 return 1 elif n 2 return 2 else return fun n 2 fun n 1 print fu...
python上樓梯問題 python解決上樓梯問題
假設一段樓梯共n n 1 個台階,小朋友一步最多能上3個台階,那麼小朋友上這段樓梯一共有多少種方法 此為京東2016年筆試題目 假設n為15,從第15個台階上往回看,有3種方法可以上來 從第14個台階上一步邁1個台階上來,從第13個台階上一步邁2個台階上來,從第12個台階上一步邁3個台階上來 同理,...
上樓梯問題 棧
這樣說可能有些費解,尤其對於初學者來說,接觸這道題的時間可能還未觸及資料結構的層次,或者有所耳聞,但是卻沒有沒法有足夠的模擬和抽象化的能力理解棧是怎樣執行的,那麼我們就從這道題開始,盡量讓你用一道題就掌握棧這個資料結構 有n級的台階,你一開始在底部,每次可以向上邁最多k級台階 最少1級 問到達第n級...