- 要用递归来解决这个问题
- 先不看整体,递归先用一个个例子来看就清楚了
- 假设有n级台阶:
- 1级台阶:
-
台阶走1步就到,结果为1。即f(1)=1
- 2级台阶:
-
台阶走1步到,或台阶走2步到,即f(2)=2
- 3级台阶
-
走到3级台阶前,乐乐肯定必须到达1级台阶或2级台阶:
-
3级台阶最后一步为1,乐乐前一步到达2级台阶,到达2级台阶有f(2)种走法
-
3级台阶最后一步为2,乐乐前一步到达1级台阶,到达1级台阶有f(1)种走法
-
总的走法为f(1)+f(2)
- n级台阶:
-
到最后完成前,乐乐可以走2步也可以走1步,
-
走1步:
-
在这1步前的走法为f(n-1)
-
走2不:
-
在这2步前的走法为f(n-2)
- 总结:
-
走完n级的台阶,
-
f(n)=f(n-1)+f(n-2)
-
可以理解成,
-
走完n级台阶的走法=最后一步是1的走法+最后一步是2的走法
-
走完n级台阶的走法=到达n-1级台阶的走法+到达n-2级台阶的走法
-
即:f(n)=f(n-1)+f(n-2)
- 实际上反应这种递归的经典例子就是斐波那契数列,也叫兔子数列,即某项为前两项之和
代码如下:
思路:
1、定义走台阶函数 2、获取用户输入,带入函数并打印输出
def fib(n):
return 1 if n<2 else fib(n-1)+fib(n-2)#三元运算符expression写法
print(fib(int(input())))