问题

有 n 个阶梯,每次可以往下走 1 步、2 步、3 步,求从顶部回到地面有多少种走法?


思路

第一个台阶,有 1 种走法

第二个台阶,有 2 种走法:

第三个台阶,有 4 种走法:

设数组 D[] 的第 i 个分量表示第 i 个台阶的走法,且 D[0] = 0,则第 N 个台阶的走法有:

所以D[N] = D[N - 3] + D[N - 2] + D[N - 1]


Python 实现

将子问题进行缓存,减少重复计算:

获取 Python 程序的最大递归深度:

优化成递推: