使用迭代方法解决递归

Posted

技术标签:

【中文标题】使用迭代方法解决递归【英文标题】:Solving recurrence using the iteration method 【发布时间】:2021-12-11 13:33:50 【问题描述】:

我需要帮助解决 T(n) = T(n/4) + T(n/3) + 2n 使用迭代方法(递归树。我想它会是 Θ(2n) 或 Θ(n )?

【问题讨论】:

请编辑问题以将其限制为具有足够详细信息的特定问题,以确定适当的答案。 【参考方案1】:

这很简单。我们有以下两个不等式:

T(n) > 2T(n/4) + 2n

and

T(n) < 2T(n/3) + 2n

现在,尝试通过展开找到上限和下限。根据这两种情况,你会发现T(n) = Theta(n)

例如,对于T'(n) = 2T(n/3) + 2n,我们有以下扩展:

T'(n) = 2T(n/3) + 2n = 2^2 T(n/3^2) + (1 + 2/3) * 2n

通过归纳我们可以证明:

T'(n) = 2^log_3(n) T(0) + (1 + 2/3 + 2^2/3^2 + ...) * 2n  
      < n + 6 * n = 7n

因为2^log_3(n) &lt; 2^log_2(n) = n(1 + 2/3 + 2^2/3^2 + ...) 是因子2/3 的几何和。因此,当n 变为无穷大时,总和将为1/(1-2/3) = 3

您可以对T(n) 的下限进行相同的分析。

因此,作为c1 * n &lt;= T(n) &lt;= c_2 * n,我们可以得出结论T(n)Theta(n)中。

【讨论】:

如何使用迭代法解决? @algor 这里,我们用迭代法解决了。

以上是关于使用迭代方法解决递归的主要内容,如果未能解决你的问题,请参考以下文章

从递归到迭代的方法

如何以递归方式思考?

递归和迭代的区别?

递归和迭代算法 [汉诺塔问题]

将迭代转换为递归

递归和迭代的差异