function f(n) {
return n < 2 ? n : f(n - 2) + f(n - 1);
}
f(50)
不考虑缓存计算结果,为什么Chrome算个f(50)就卡死呢?
function f(n) {
return n < 2 ? n : f(n - 2) + f(n - 1);
}
f(50)
不考虑缓存计算结果,为什么Chrome算个f(50)就卡死呢?
稍微修改一下,做个缓存就好了
let fibs = {0:0, 1:1, 2:1};
function f(n) {
if(fibs[n] !== undefined) return fibs[n];
return fibs[n] = f(n-2) + f(n-1);
}
10 回答10.7k 阅读
7 回答10.8k 阅读
6 回答2.6k 阅读
2 回答11.4k 阅读✓ 已解决
5 回答4.4k 阅读✓ 已解决
4 回答2.7k 阅读✓ 已解决
4 回答11.9k 阅读
调用栈太深了
可以考虑使用数组/对象缓存或是尾递归优化(TCO)
数组缓存的方式:
http://es6.ruanyifeng.com/#do...尾调用优化
http://blog.csdn.net/ntoskiki... 解决方案