1 描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级。请问该青蛙跳上一个n级的台阶总共有多少种跳法。
输入台阶数,输出一共有多少种跳法
注意:如果运算超时,请思考有什么办法降低时间复杂度。
- 输入
示例1:3
- 输出
示例1:3
2 解题
分析:对于本题,考虑第一次跳跃的情况,只有1阶或2阶两种跳法,n个台阶跳法是f(n)
a. 假定第一次跳的是1阶,那么剩下的是n-1个台阶,跳法是f(n-1)
b. 假定第一次跳的是2阶,那么剩下的是n-2个台阶,跳法是f(n-2)
c. 由a\b假设可以得出总跳法为: f(n) = f(n-1) + f(n-2)
d. 然后考虑基例情况:只有一阶的时候 f(1) = 1, 只有两阶的时候可以有 f(2) = 2
e. 最终可以发现,这个问题实际上是求解一个斐波那契数列:
| 1, (n=1)
f(n) = | 2, (n=2)
| f(n-1)+f(n-2) ,(n>2,n为整数)
代码:
def series(n):
if(n==1):
return 1
if(n==2):
return 2
return series(n-1)+series(n-2)
n=20
print(series(n))
输出: