题解 | #小乐乐走台阶#
小乐乐走台阶
http://www.nowcoder.com/practice/ebf04de0e02c486099d78b7c3aaec255
- 要用递归来解决这个问题
 - 先不看整体,递归先用一个个例子来看就清楚了
 - 假设有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())))
查看6道真题和解析
字节跳动公司福利 1315人发布