如何在JavaScript中实现爬楼梯练习的回溯?

假设我们需要爬上一个有n个台阶的楼梯,并且我们决定通过上台阶来进行一些额外的锻炼。

我们一次跳跃最多可以覆盖k个步骤。无论阶梯数多少,k都可以为1或2。

我们被要求返回所有可能的跳跃顺序,以供您爬楼梯。

例如-

for n = 4 and k = 2,

输出应该是-

climbingStaircase(n, k) = [[1, 1, 1, 1], [1, 1, 2], [1, 2, 1], [2, 1, 1], [2, 2]];

示例

为此的代码将是-

const n = 4;
const climbStairs = (n) => {
   if (n == 0) return 0;
   let memory = new Map();
   let recur = (left) => {
      if (memory.has(left)) return memory.get(left);
      if (left <= 0) return 0;
      if (left == 1) return 1;
      if (left == 2) return 2;
      memory.set(left, recur(left − 2) + recur(left − 1));
      return memory.get(left);
   };
   return recur(n);
};
console.log(climbStairs(n));

输出结果

控制台中的输出将是-

5