记忆化解决纯函数重复调用导致的高开销计算问题,如递归斐波那契;通过缓存参数与结果映射,避免指数级重复运算,常用对象或Map实现,仅适用于无副作用的纯函数。

记忆化(Memoization)是一种用空间换时间的优化技术,它把函数已计算过的输入和对应结果缓存起来,当相同输入再次出现时,直接返回缓存结果,跳过重复计算。
它主要应对纯函数中重复调用、高开销计算的场景。比如递归求斐波那契数列、解析复杂表达式、频繁调用的数学变换等——这些函数若无缓存,可能指数级重复运算。
核心是用一个对象或 Map 存储 参数 → 返回值 的映射。常见做法是在函数外部维护缓存,或用闭包封装:
JSON.stringify(arg)),但要注意原始类型可直接用作 key以斐波那契为例:
立即学习“Java免费学习笔记(深入)”;
function fib(n) {
if (n <= 1) return n;
return fib(n - 1) + fib(n - 2);
}未记忆化时,fib(40) 会调用数十万次;加记忆化后变成线性时间:
function memoFib() {
const cache = new Map();
return function(n) {
if (cache.has(n)) return cache.get(n);
if (n <= 1) return n;
const result = memoFib()(n - 1) + memoFib()(n - 2);
cache.set(n, result);
return result;
};
}更实用写法是封装成高阶函数:const memoizedFib = memoize(fib),复用逻辑。
记忆化不是万能的:
以上就是什么是JavaScript中的记忆化技术_它如何优化函数性能?的详细内容,更多请关注php中文网其它相关文章!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号