2019 太大,先从 “1” 算起。
从 A 到 B 距离为 “1” ,每一步可随机行走距离 1、3 或 5,从 A 到 B 共有1种走法。
从 A 到 B 距离为 “2” ,每一步可随机行走距离 1、3 或 5,从 A 到 B 共有1种走法。
从 A 到 B 距离为 “3” ,每一步可随机行走距离 1、3 或 5,从 A 到 B 共有2种走法。
从 A 到 B 距离为 “4” ,每一步可随机行走距离 1、3 或 5,从 A 到 B 共有3种走法。
从 A 到 B 距离为 “5” ,每一步可随机行走距离 1、3 或 5,从 A 到 B 共有5种走法。
从 A 到 B 距离为 “6” ,每一步可随机行走距离 1、3 或 5,从 A 到 B 共有8种走法。
从 A 到 B 距离为 “7” ,每一步可随机行走距离 1、3 或 5,从 A 到 B 共有12种走法。
从 A 到 B 距离为 “8” ,每一步可随机行走距离 1、3 或 5,从 A 到 B 共有19种走法。
从 A 到 B 距离为 “9” ,每一步可随机行走距离 1、3 或 5,从 A 到 B 共有30种走法。
def climbStairs1(stairs):
'''
:param stairs:the numbers of stair
:return:
'''
if isinstance(stairs,int) and stairs > 0:
basic_num = {0:1,1:1,2:1,3:2,4:3,5:5}
if stairs in basic_num.keys():
return basic_num[stairs]
else:
return climbStairs1(stairs-1) + climbStairs1(stairs-3)+ climbStairs1(stairs-5)
else:
print( 'the num of stair is wrong')
return False
#递推法
def climbStairs2(stairs):
'''递推实现
:param stairs: the amount of stair
:return:
'''
if isinstance(stairs,int) and stairs > 0:
h1=1#对应1,2,3, 4, 5阶楼梯的方法数
h2=1
h3=2
h4=3
h5=5
n=5
basic_num = {1:1,2:1,3:2,4:3,5:5}
if stairs in basic_num.keys():
return basic_num[stairs]
else:
for i in range(stairs-n):