gpt4 book ai didi

javascript - "JavaScript - the Good Parts"示例的解释(第 4.15 节)?

转载 作者:数据小太阳 更新时间:2023-10-29 04:41:20 26 4
gpt4 key购买 nike

JS 初学者 :) 需要来自 Crockford's book 的代码片段的解释, 第 4.15 节:

var memoizer = function (memo, fundamental) {
var shell = function (n) {
var result = memo[n];
if (typeof result !== 'number') {
result = fundamental(shell, n);
memo[n] = result;
}
return result;
};
return shell;
};

var fibonacci = memoizer([0, 1], function (shell, n) {
return shell(n - 1) + shell(n - 2);
});

问题:我们如何计算 fibonacci(15),如果是简单的 fibonacci(15) 调用,那么它的详细工作原理是什么?

感谢您的帮助。

最佳答案

这是一个 console.log() 注释版本,它试图显示堆栈如何返回并将 (n-1)+(n-2) 的结果分配给每个相应的 memo 数组递归调用。还要记住堆栈以相反的顺序返回。因此,在记录的输出中,您会看到最先返回的最后一个调用:

var memoizer = function (memo, fundamental) {
var shell = function (n) {
var result = memo[n];
if (typeof result !== 'number') {
result = fundamental(shell, n);
console.log("Hence 'shell(n-1)+shell(n-2)' results in the assignment memo["+n+"]="+result);
memo[n] = result;
}
return result;
};
return shell;
};
var fibonacci = memoizer([0, 1], function (shell, n) {
console.log("shell is called, and 'n' is equal to --> " + n + "\n" + "At this point shell(n-1)="+shell(n-1)+" AND shell(n-2)="+shell(n-2));
return shell(n - 1) + shell(n - 2);
});

关于javascript - "JavaScript - the Good Parts"示例的解释(第 4.15 节)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3798858/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com