• 要用递归来解决这个问题
  • 先不看整体,递归先用一个个例子来看就清楚了
  • 假设有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())))