难以弄清楚这种递归函数的时间复杂度

时间:2012-01-12 23:25:40

标签: master-theorem

我认为这很有趣,但我不确定我的解决方案。该算法计算x n

如果我使用主定理,我的理由就是这样

T(n) = 2 T(n/2) + f(n)

但在这种情况下f(n)是1?因为n <= 4是恒定的。给我:

T(n) = Θ(n)

如果我使用替换,我会得到这个答案

T(n) = Θ(n + log(n))

我觉得我做错了很多。有人能指出我正确的方向吗?

2 个答案:

答案 0 :(得分:1)

T(n)=Θ(n + log(n))仅为T(n)=Θ(n)。使用theta时,可以省略低阶项(log(n))。

另外,f(n)是O(1)因为你只为每次递归做一次乘法(rek(x,n / 2)* rek(x,(n + 1)/ 2))。

答案 1 :(得分:0)

复杂度为0(n)。说明:在使用简单循环时,可以进行所有乘法运算。并且你没有操作,数字除以*的数字大于const。因此,复杂度约为const * 0(n),即0(n)。