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(n / c)的每次调用都在O(log n)中,并且因为每个调用都有一个从1到n的for循环,所以它应该是O(n log n)。但是因为A()的每次调用也会引起3次,所以它也应该有点指数,对吧?
答案 0 :(得分:2)
x
的计算仅使用n
步骤为n
分配n
。所以我们可以假设循环只是一个虚拟的return n * (A(n/3) ** 3);
步骤。
该功能的其余部分可以归结为:
n + n/3 + n/9 + ...
在每个递归步骤中,A除以3.这意味着我们有效地获得n/3
之和直到E(i = 0, inf)
达到< 0.5。
整个事情需要乘以3,但这本身并不会改变任何复杂性。现在这样的总和(n/(k^i)
)n/k-1
收敛到O(n)
,k
给定常数O(n)
。当然,将实际划分为6或4也不会改变任何东西。
因此整个函数的复杂性为pip install ffmpeg_normalize
。