1 递归写法,从前向后,缩小问题规模,追问溯源,时间换简单
def climb(n,steps):
count=0if n==0:
count=1
elif n>0:
for step in range(1,steps+1):
count += climb(n-step,steps)
return count
print( climb(10,2))
2 循环写法, 空间换时间
def climb2(n,step):res=[0 for i in range(n+1)]
for i in range(n+1):
for j in range(1,step+1):
if i==0: res[i+j]=1
if i+j<n+1:
res[i+j] += res[i]
return res[n]
print(climb2(10,2))
print(res[10])