小明爬楼梯,一步最多上3个台阶。编写 程序,从键盘输入一段楼梯的阶数,计算小明爬上这段楼梯共有多少种方法。
解法1(利用递归算法,但时间复杂度太高)
def fun(n):
list={1:1,2:2,3:4}
if n in list.keys():
return list[n]
else:
return fun(n-1)+fun(n-2)+fun(n-3)
n=int(input())
print(fun(n))
解法2(非递归算法,执行时间较短)
def fun(n):
a,b,c,t=1,2,4,0
if n<3:
return n
if n==3:
return 4
for i in range(n-3):
t=a+b+c
a=b
b=c
c=t
return t
n=int(input())
print(fun(n))
递归算法更容易理解,但执行时间更长一些