Recursion 此函数的大O表示法

Recursion 此函数的大O表示法,recursion,time-complexity,big-o,asymptotic-complexity,Recursion,Time Complexity,Big O,Asymptotic Complexity,我的第一个想法是,A(n/c)的每个调用都在O(logn)中,因为每个调用都有一个从1到n的for循环,所以它应该是O(nlogn)。但是,由于A()的每次调用也会引发3次以上的调用,因此它也应该是指数型的,对吗?计算x只需通过n步骤将n分配给它。因此,我们可以假设循环只是一个伪n步骤 该功能的其余部分可以简化为: function A(n): if n ≤ 10 then return 1 fi; x := 0; for i = 1 to n do

我的第一个想法是,A(n/c)的每个调用都在O(logn)中,因为每个调用都有一个从1到n的for循环,所以它应该是O(nlogn)。但是,由于A()的每次调用也会引发3次以上的调用,因此它也应该是指数型的,对吗?

计算
x
只需通过
n
步骤将
n
分配给它。因此,我们可以假设循环只是一个伪
n
步骤

该功能的其余部分可以简化为:

function A(n):
    if n ≤ 10 then
        return 1 fi;
    x := 0;
    for i = 1 to n do
        x := x + 1 od;
    return x * A(n/3) * A(n/6) * A(n/4)
在每个递归步骤中,A被3除。这意味着我们有效地得到了
n+n/3+n/9+…
,直到
n/3
达到<0.5为止

整个过程需要乘以3,但这本身不会改变任何复杂性。现在这样一个求和(
E(i=0,inf)
of
n/(k^i)
)收敛到
n/k-1
,即给定一个常数
k
。当然,按6或4进行实际除法也不会改变任何事情

因此,整个函数的复杂性是
O(n)

return n * (A(n/3) ** 3);