循环简单算法的记忆

时间:2013-12-03 23:34:47

标签: c++ memoization

在阅读关于for循环优化的另一个有趣的post时,我注意到其中一个评论员建议使用memoization技术。

我挖了一下以了解更多信息,并找到了几个如何记住factorialfibonacci序列等函数的示例,仅举两个例子。

我可以遵循这些并理解一般的想法,但我正在努力将其应用于简单的算术运算,例如原始帖子中的那个:

for (j=0; j < ARRAY_SIZE; j++) {
    sum += array[j];
}

已计算的部分是什么?

是否有可能或评论员认为它可以在这里适用?


我很有兴趣在这篇文章中学习memoization技术,我知道有其他方法,例如展开,可以提供重要的优化。

1 个答案:

答案 0 :(得分:0)

for-loop本身不能被记忆。当您可以存储先前解决的子问题并使用它们来计算更大的子问题/问题时,Memoization适用。因此,它与可以通过递归求解的函数密切相关,因为这也意味着问题被分解为子问题。 (另见:Dynamic programming)。