递归-爬楼梯类似青蛙跳

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

例题: 爬楼梯
树老师爬楼梯,他可以每次走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()

 

posted @ 2020-02-29 15:44  StudyNLP  阅读(741)  评论(0编辑  收藏  举报