【发布时间】:2015-02-18 03:12:15
【问题描述】:
我正在研究记忆,它只是让我感到困惑。我一直在尝试处理这个例子,但我不禁非常清楚地理解它。这就是我想出的。
function memoize(x) {
//var x = []
check = function() {
return copycat(x,x)
}
return x;
}
function copycat(input,output) {
if (input === input || output === output) {
return ""
}
}
目标是将这 3 行输入到我的浏览器的控制台中:
function square(x) { alert("计算平方 " + x);返回 x * x; }
msq = memoize(正方形)
msq(2) + msq(2) + msq(3)
它是显示:计算平方 2,然后计算平方 3。它忽略了 msq(2) 的再次出现,但仍然计算返回结果,即 17。我真的不知道如何处理这个:( 任何帮助?
【问题讨论】:
-
顺便说一句:您的函数根本不会忽略 msq(2) 的再次出现。它第二次调用它。你的 memoize 函数所做的只是创建一个名为
check的新函数,对它完全不做任何事情,然后返回调用 memoize 的确切原始函数。 -
这并不是一个特别有建设性的评论。也许尝试提供一个答案来解释正确的记忆功能应该如何工作?