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

(其实我仍是喜欢下面这样写,容易懂)

相关文章
相关标签/搜索