博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python解决上楼梯问题
阅读量:4916 次
发布时间:2019-06-11

本文共 655 字,大约阅读时间需要 2 分钟。

假设一段楼梯共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

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

转载于:https://www.cnblogs.com/liuzhaowei/p/10770878.html

你可能感兴趣的文章
在Tomato中加入 自动断开空联接功能
查看>>
Qt可执行程序写入版本信息
查看>>
程序随感备录
查看>>
Jenkins_rpm安装
查看>>
异常处理的相关主题
查看>>
类似微信选择添加删除图片的demo
查看>>
是什么使你留在你的公司
查看>>
TensorFlow训练MNIST数据集(3) —— 卷积神经网络
查看>>
推荐12款可用于前端开发的免费文本编辑器
查看>>
043 Android 数据库框架GreenDao使用
查看>>
hydra 及相关示例
查看>>
1926: 粟粟的书架 前缀和+二分+主席树
查看>>
bs和cs
查看>>
常用vim命令
查看>>
Day18 高阶函数
查看>>
Tomcat工作原理
查看>>
我的Python分析成长之路7
查看>>
Window对象 setInterval()方法应用
查看>>
CSS样式-文字在一行内显示不换行,超出部分用省略号(white-space、overflow、text-overflow、word-wrap、word-break)...
查看>>
Linux下安装jdk
查看>>