青蛙跳台阶的几种方法
描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级。请问该青蛙跳上一个n级的台阶总共有多少种跳法。
输入台阶数,输出一共有多少种跳法
注意:如果运算超时,请思考有什么办法降低时间复杂度。
- n个台阶的跳法是f(n)
- 假设第一个跳的是1阶,那么剩下的是n-1个台阶,跳法是f(n-1)
- 假设第一个跳的是2阶,那么剩下的是n-2个台阶,跳法是f(n-2)
- 由前两个的假设可以得到总跳法为:f(n)=f(n-1)+f(n-2)
递归法:
(可能会超时,在python123上有些用例不能通过)
n=int(input(""))
def jump(n):
if n == 1:
return 1
elif n == 2:
return 2
else:
return jump(n-1) + jump(n-2)
print(jump(n))
方法二:
n=int(input(""))
def jump(n):
if n<=2:
return n
t1,t2=1,2
for i in range(3,n+1):
t1,t2=t2,t1+t2
return t2
print(jump(n))
***方法三(跟上一个差不多)***:
n=int(input(""))
def jump(num):
if num in (1,2):
return n
n=1
m=2
for i in range(num-2):
result=m+n
n=m
m=result
return result
print(jump(n))