# test
// 有一个 N 阶的台阶,每次可以走 1 阶、2 阶或者3阶,实现一个函数要求输入台阶数可以返回走到顶部的方法数
// 例:N 为 2 时候,有[2, 1-1]两种走法
// 要求 1:只允许使用递归
// 要求 2:当台阶数是 1000 时可以函数可以正常执行
function getNum(N) {
const cache = new Map();
function fn(n) {
if (n <= 2) return n;
if (cache.has(n)) {
return cache.get(n);
} else {
const res = fn(n - 1);
const res1 = fn(n - 2);
const res2 = fn(n - 3);
cache.set(n, res);
return res + res1 + res2;
}
}
return fn(N);
}
console.log(getNum(100));
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
← schedule并发限制 throttle →