迭代的递归函数

时间:2015-11-26 21:56:52

标签: function recursion iteration

给出以下功能:

    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

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

你有一些提示吗?

1 个答案:

答案 0 :(得分:0)

要计算var codes = function (){ function rightKey(){ rightKey = true; } function leftKey() { leftKey = true; } return { 39 : rightKey, 37 : leftKey, '...': '...', 68 : rightKey, 65 : leftKey }}() ,您可以使用以下迭代方法:

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

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