递归-爬楼梯类似青蛙跳
用递归将问题分解为规模更小的子问题进行求解
例题: 爬楼梯
树老师爬楼梯,他可以每次走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()