如何确定给定递归函数的运行时间T(n)?

时间:2018-11-04 15:58:51

标签: time-complexity recurrence

如何确定下一个函数的T(n)的递推公式?

if(N == 0)
  return 1;

s = 0;

x = function(N/3);

for(i = 1; i <= N; i++){
  s += x;
}

return s;

2 个答案:

答案 0 :(得分:1)

您可以标识复杂度为x = function(N/3)的递归调用T(n/3)。接下来是N个附加项,因此需要进行N个操作。

因此,此函数的复杂性的递归关系为

T(n) = T(n/3) + n

因此

T(n) = O(n.log3(n))

答案 1 :(得分:0)

您可以使用主定理:

T(n)= a * T(n / b)+ C * n ^ k(a,b,C> 0,k在N中)

情况1:a T(n)在Θ(n ^ k)中

情况2:a = b ^ k-> T(n)以Θ(n ^ k * log(n))表示

情况3:a> b ^ k-> T(n)在Θ(n ^ logb a)中

在您的情况下,T(n)= 1 * T(n / 3)+С* n ^ 1。

a = 1,b = 3,k = 1-> T(n)在Θ(n)中。