classSolution:"""
解题思路一:递归解法
1.递推公式为 f(n) = f(n-1) + f(n-2) + f(n-3)
2.添加备忘录 解决递归的重复调用问题
解题思路二: 非递归解法
1.类似于斐波那契额数列
2.假设a, b, c = 1, 2, 4
3.公式为: d = a + b + c
"""# 解题思路一def__init__(self):
self.memo =dict()defwaysToStep(self, n:int)->int:if n ==1or n ==2:return n
if n ==3:return4if self.memo.get(n):return self.memo.get(n)
self.memo[n]=(self.waysToStep(n-1)+ self.waysToStep(n-2)+ self.waysToStep(n-3))%1000000007return self.memo[n]# 解题思路二defwaysToStep(self, n:int)->int:if n ==1or n ==2:return n
if n ==3:return4# a, b, c 为初始值 d为结果
a, b, c, d =1,2,4,0for i inrange(4, n+1):
d =(a + b + c)%1000000007
a, b, c = b, c, d
return d