假设我们需要爬上一个有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