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()
  • 相关阅读:
    【第一季】CH06_FPGA设计Verilog基础(三)
    【第一季】CH05_FPGA设计Verilog基础(二)Enter a post title
    【第一季】CH04_FPGA设计Verilog基础(一)Enter a post title
    [第二季ZYNQ] [南京米联]ZYNQ第二季更新完毕课程共计16节课
    第十四章 ZYNQ TIMER定时器中断
    第十三章 ZYNQ-MIZ702 PL中断请求
    第十二章 ZYNQ-MIZ702 PS读写PL端BRAM
    bzoj3876 [Ahoi2014&Jsoi2014]支线剧情
    bzoj3698 XWW的难题
    bzoj2055 80人环游世界
  • 原文地址:https://www.cnblogs.com/an-wl/p/12383286.html
Copyright © 2011-2022 走看看