【发布时间】:2019-02-19 04:53:31
【问题描述】:
具有以下递归关系的递归函数的时间复杂度是多少:
T(n) = T(n-1) + T(n-2) + T(n-3), T(0) = T(1) = 1 and T(2) = 2
我知道有两个递归调用的函数会给我们O(2^n)的指数时间复杂度,这是否意味着具有上述递归关系的函数将具有时间复杂度O(3^n)?
感谢您的帮助。
【问题讨论】:
-
每个递归调用都必须有一个基本条件,你能分享一下吗?
-
恕我直言,如果您不使用动态编程并再次进行所有计算,则复杂度为 O(3^n),因为对于 n>3,对于每个 n,您正在计算/做工作 3 次上一步的。
-
添加了基本情况:T(0) = T(1) = 1 和 T(2) = 2
-
例如
T(6) = T(5) + T(4) + T(3), T(5) , T(4), T(3)--> 每个递归 3 次,所以 T(6) 有 3^3 次计算。 -
是的,复杂性限制在
O(N^3)以下,尽管您总是可以解决递归关系以获得更丑陋的精确版本...wolframalpha.com/input/…
标签: algorithm recursion big-o complexity-theory