【问题标题】:Recursive function to iterative递归函数到迭代
【发布时间】:2016-03-01 01:49:03
【问题描述】:

给出如下函数:

    T(n, 0) = n, n >= 0,
    T(0, k) = k, k >= 0,
    T(n, k) = T(n - 1, k - 1) + T(n, k - 1) + 1, n > 0 and k > 0

我想要实现的是将其转换为迭代版本。我已经尝试绘制递归树来注意一些依赖关系,但我仍然无法弄清楚。

你有什么建议吗?

【问题讨论】:

  • 你熟悉动态规划吗?
  • 我知道这个概念是什么意思,但到目前为止还没有使用过。我看不出我可以在哪里应用它的原则。

标签: function recursion iteration


【解决方案1】:

要计算T(n, k),您可以使用以下迭代方法:

  • S(i)表示T(0,i)到T(n,i)的向量
  • 用零初始化您的状态向量 S(0)
  • 对于 i=1 到 k
  • 使用 S(i-1) 计算 S(i)
  • 结束
  • 你的结果是 S(i) 的最后一个元素

请注意,您只需要最近的 S(i),为了提高内存效率,您可以只存储它。

【讨论】:

  • 我必须用 i 从 0 到 k 初始化第一行,然后它就起作用了。谢谢你:)
猜你喜欢
  • 2021-12-31
  • 2019-06-20
  • 2021-03-17
  • 2019-04-03
  • 2011-05-05
  • 2012-10-17
  • 2021-12-09
  • 1970-01-01
  • 2012-01-23
相关资源
最近更新 更多