zoukankan      html  css  js  c++  java
  • 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

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

  • 相关阅读:
    利用SVN进行个人代码管理
    ECEF坐标系
    地理坐标系、大地坐标系、投影坐标系
    让VS能够识别我的DLL运行库
    cannot convert parameter 1 from 'const char *' to 'LPCWSTR' 修改
    创建文件目录C++ windows
    GDAL获取遥感图像基本信息
    全球经纬度划分
    遥感影像度与米的转换
    C++ assert用法
  • 原文地址:https://www.cnblogs.com/liuzhaowei/p/10770878.html
Copyright © 2011-2022 走看看