函数式编程:纯代码的蓝图
1. 蹦床函数与记忆化递归
蹦床函数(Trampoline)允许我们模拟递归,同时避免栈溢出。以下是一个示例代码:
const max = 20000;
const addOne = (n) => {
if (n >= max) {
return n;
}
return () => addOne(n + 1);
}
const TcoExecutor = (f) => {
while (typeof f == "function") {
f = f();
}
return f;
}
let result = TcoExecutor(addOne(0)); // 20000
console.log('result: ', result);
结合记忆化(Memoization)、递归和蹦床函数,我们可以避免重复计算:
const max = 5;
// memoize a function
const memoize = (fn) => {
let cache = {}; // Map() // WeakMap()
return (...args) => {
let n = args[0];
if (n in cache) {
console.log('Fetching from cache', n);
return cache[n];
}
el
超级会员免费看
订阅专栏 解锁全文
13

被折叠的 条评论
为什么被折叠?



