【发布时间】:2011-09-11 11:16:26
【问题描述】:
“Doug Crockford: JavaScript: The Good Parts”提出的以下功能。效果很好。
var fibonacci = function () {
var memo = [0, 1];
var fib = function (c) {
console.debug(memo, c, memo[c]);
result = memo[c];
if (typeof result !== 'number'){
result = fib(c - 1) + fib(c - 2);
memo[c] = result;
}
return result;
};
return fib;
}();
console.log(fibonacci(3));
但是让我们详细看看第 4 行发生了什么
console.debug(memo, c, memo[c]);
它显示了与预期相反的以下结果。
memo, c, memo[c]
[0, 1, 1, 2] 3 undefined //contradictory behavior because I expect to have memo = [0, 1]
[0, 1, 1, 2] 2 undefined //contradictory behavior
[0, 1, 1, 2] 1 1
[0, 1, 1, 2] 0 0
[0, 1, 1, 2] 1 1
2
一些想法?
【问题讨论】:
标签: javascript