python解決上樓梯問題

假設一段樓梯共n(n>1)個臺階,小朋友一步最多能上3個臺階,那麼小朋友上這段樓梯一共有多少種方法spa

(此爲京東2016年筆試題目)3d

假設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=1五、1四、1三、...、五、4。而後就是肯定這個遞歸公式的結束條件了,
第一個臺階只有1種上法,第二個臺階有2種上法(一步邁2個臺階上去、一步邁1個臺階分兩步上去),第三個臺階有4種上法
blog

 

代碼以下遞歸

 

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)

input

截圖以下方法

 

(來讓小朋友把這些走法挨個走一遍......)im

 

這裏提一下上面的筆試

c, b, a = a+b+c, c, bimg

這段代碼的用法截圖

這段代碼是先計算右邊的數值,先計算a + b + c

而後從右邊開始先將b的值賦給a,再將c的值賦給b,最後將a + b + c的值賦給c

這段代碼等價於

m = a + b +c

a = b

b = c

c = m

(其實我仍是喜歡下面這樣寫,容易懂)

相關文章
相關標籤/搜索