标签:fun 导致 堆栈溢出 直接 调用 OLE 代码 返回 for
_.memoize(func, [resolver])
创建一个会缓存 func 结果的函数。 如果提供了 resolver ,就用 resolver 的返回值作为 key 缓存函数的结果。 默认情况下用第一个参数作为缓存的 key。 func 在调用时 this 会绑定在缓存函数上。
注意: 缓存会暴露在缓存函数的 cache 上。 它是可以定制的,只要替换了 _.memoize.Cache 构造函数,或实现了 Map 的 delete, get, has, 和 set方法。
参数
func (Function): 需要缓存化的函数.
[resolver] (Function): 这个函数的返回值作为缓存的 key。
返回
(Function): 返回缓存化后的函数。
const J = (n) => n === 0 ? 1 : J(n-1) + 1
如果直接调用J(1000000),会导致堆栈溢出,改用lodash中_.memoize, 记忆上一次函数结果
代码:
const JJ = _.memoize((n) => n === 0 ? 1 : JJ(n - 1) + 1);
for (let i = 1; i <= 1000000; i++) {
JJ(i);
}
console.log(JJ(1000000));
const F = (n) => n < 2 ? 1 : F(n-1) + F(n-2)
同上例, 直接调用,会导致堆栈溢出,需要用_.memoize。
代码:
const FF = _.memoize((n) => n < 2 ? 1 : FF(n - 1) + FF(n - 2));
for (let i = 1; i <= 1000; i++) {
FF(i);
}
console.log(FF(1000));
标签:fun 导致 堆栈溢出 直接 调用 OLE 代码 返回 for
原文地址:https://www.cnblogs.com/qiqi715/p/10026355.html