如何计算以下模块的Theta顺序作为n的函数?

时间:2017-09-27 20:07:35

标签: recursion big-o

function rec (n:integer);
   begin
       if n<=1 then
           return (1)
       else
           return(rec(n-1)+rec(n-1)+rec(n-1))
   end

我的复发如下,我很难将这种复发表达为n的函数。 我认为等式是一些类似的东西; T(n)= 3T(n-1)+2。

1 个答案:

答案 0 :(得分:0)

考虑这个函数的稍微更通用的版本:

enter image description here

多次将其重新替换为自身,以发现出现的模式:

enter image description here

重复m次的过程。

我们什么时候停止?此重复的停止条件n <= 1,因此:

enter image description here

因此T的表达式变为:

enter image description here

用数字代替,a = 3, b = 1, c = 2

enter image description here

请注意,我们忽略了m最大值的任何舍入,因为整数舍入误差的最大幅度为0.5,因此只会给出一个常数因子差异。