zoukankan      html  css  js  c++  java
  • 递归-爬楼梯类似青蛙跳

    用递归将问题分解为规模更小的子问题进行求解

    例题: 爬楼梯
    树老师爬楼梯,他可以每次走1级或者2级,输入楼梯的级数,求不同的走法数
    例如:楼梯一共有3级,他可以每次都走一级,或者第一次走一级,第二次走两级,也可以第一次走两级,第二次走一级,一共3种方法。
    输入
    输入包含若干行,每行包含一个正整数N,代表楼梯级数,1<= N <= 30输出不同的走法数,每一行输入对应一行

    爬楼梯
    输出
    不同的走法数,每一行输入对应一行输出
    样例输入
    5
    8
    10
    样例输出
    8
    34
    89

    解题思路:n级台阶的走法 = 先走一级后,n-1级台阶的走法 +先走两级后,n-2级台阶的走法
    递归表达式为:f(n) = f(n-1)+f(n-2)
    边界条件: n = 1,1种走法, n = 2,2种走法

    python代码:

    """
    list = ["a","b","c","d","e","f"]
    i = 1
    for i,j in enumerate(list[i+1:],1):
        #list[2] = "k"
        #if (i < len(list)):
            #print(i,list[i])
        print(i,j)
    
    用递归将问题分解为规模更小的子问题进行求解
    例题: 爬楼梯
    树老师爬楼梯,他可以每次走1级或者2级,输入楼梯的级数,求不同的走法数
    例如:楼梯一共有3级,他可以每次都走一级,或者第一次走一级,第二次走两级,也可以第一次走两级,第二次走一级,一
    共3种方法。
    输入
    输入包含若干行,每行包含一个正整数N,代表楼梯级数,1<= N <= 30输出不同的走法数,每一行输入对应一行
    爬楼梯
    输出不同的走法数,每一行输入对应一行输出
    样例输入
    5
    8
    10
    样例输出
    8
    34
    89
    
    有些地方题目类似青蛙跳,原理是一样的
    """
    
    def stairs(n):
    
        if (n == 1):
            return 1
        if (n == 2):
            return 2
        return stairs(n-1)+stairs(n-2)
    
    def main():
        stepNum = int(input("请输入台阶数:"))
        result = stairs(stepNum)
    
        print("台阶数为:%d具有%d种走法!"%(stepNum,result))
    
    if (__name__ == "__main__"):
        main()
  • 相关阅读:
    分布式缓存系统Memcached
    HTTP(GET/POST)请求过程中的编码问题
    将指定的Json字符串转为指定的T类型对象(转帖)
    Linux 中有几个文件压缩和解压缩工
    策略添加-通过域策略组自动映射共享文件夹
    Centos 7 加AD域
    Gns3 模拟器创建VLAN
    防火墙常用命令
    Centos 6 任务计划配置
    Cenots 7 开启 SSH_远程连接
  • 原文地址:https://www.cnblogs.com/an-wl/p/12383286.html
Copyright © 2011-2022 走看看