python解決上樓梯問題


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

(此為京東2016年筆試題目)

假設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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM