【问题标题】:Having hard time understanding memoization很难理解记忆
【发布时间】:2015-08-11 09:55:45
【问题描述】:

最近,我在阅读“好的部分”,并且正在阅读一个名为 memoization 的主题,但我无法正确理解它。我没有得到的是,这不是一种消耗内存的方式,比如在函数执行大量时间的情况下保持一个包含大量数据的变量。如果是这种情况,那么它是如何优化的。请注意,我是 java 脚本的新手,我已经阅读过这个主题。

【问题讨论】:

  • en.wikipedia.org/wiki/Memoization... 寻找网络上可用的 ppts 并谦虚地开始,搜索使用的各种术语的含义,然后您可以进一步增强它们。一切顺利。
  • 为什么要减去,有那么明显吗???
  • 它并不那么明显,我们希望您能理解。但是在问这里之前,你应该在这个问题上付出一些努力。如果您不理解某个概念,请告诉我们您的困惑是什么。不要只问“这是什么?”
  • @Vishwanath 我将编辑我的问题
  • 正是……这就是重点……您只能提出有限的问题。因此,请明智地选择您的要求。

标签: javascript node.js scripting memoization


【解决方案1】:

还记得动态规划吗?在计算一个数的阶乘时,您记住阶乘直到 n-1,然后将 fact(n-1) 与 n 相乘。但在某些情况下,问题是不必要的调用,这很容易避免。

为了节省这些不必要的调用,我们可以记住它。要保存 memoize 结果,可以在闭包内使用数组。当你的函数被调用时,它首先检查它是否已经有答案,如果有,则返回答案,否则重新计算。

【讨论】:

  • 你能举个例子吗?
【解决方案2】:

Memoization 是一种简单的机制,它包含缓存计算值的结果。

  1. 这允许使用相同的参数完成下一个函数调用, 命中缓存而不是重新计算此值。
  2. 缓存由输入参数索引。如果参数存在 在缓存中,然后返回缓存的值。
  3. 否则,执行函数,新计算的值为 添加到缓存中。

如果你了解缓存机制,就很容易理解 memoization。

据我所知,可以对他们的程序进行两种优化:

  1. 时间优化
  2. 内存优化

这完全取决于要求。

【讨论】:

    【解决方案3】:

    如果你了解基础知识

    • 原型继承
    • 可变范围和
    • 关闭

    这个article 是你需要的。但请注意,您必须了解上面提到的 JS 概念

    【讨论】:

      猜你喜欢
      • 2010-11-07
      • 2016-10-14
      • 2012-09-27
      • 2015-05-13
      • 2020-12-02
      • 1970-01-01
      • 1970-01-01
      • 2021-12-29
      相关资源
      最近更新 更多