在阅读关于for
循环优化的另一个有趣的post时,我注意到其中一个评论员建议使用memoization
技术。
我挖了一下以了解更多信息,并找到了几个如何记住factorial或fibonacci序列等函数的示例,仅举两个例子。
我可以遵循这些并理解一般的想法,但我正在努力将其应用于简单的算术运算,例如原始帖子中的那个:
for (j=0; j < ARRAY_SIZE; j++) {
sum += array[j];
}
已计算的部分是什么?
是否有可能或评论员认为它可以在这里适用?
我很有兴趣在这篇文章中学习memoization
技术,我知道有其他方法,例如展开,可以提供重要的优化。
答案 0 :(得分:0)
for-loop本身不能被记忆。当您可以存储先前解决的子问题并使用它们来计算更大的子问题/问题时,Memoization适用。因此,它与可以通过递归求解的函数密切相关,因为这也意味着问题被分解为子问题。 (另见:Dynamic programming)。