计算执行时间基本操作的次数

时间:2014-09-07 07:15:10

标签: recursion time-complexity

我已经获得了这个算法来计算n个第一个立方体的总和:

s(n) {
  if (n == 1) {
    return 1 
  } else {
    return s(n - 1) + n * n * n
  }
}

要计算执行基本操作的次数,我被要求使用以下递归关系:T(1) = 0T(n) = T(n - 1) + 2

有人可以向我解释为什么这种关系看起来像这样,更确切地说:数字2来自哪里?

我认为n = 2 T(2) = 1,因为乘法只执行一次,但根据公式T(2) = 2

1 个答案:

答案 0 :(得分:0)

这里的复杂性是运行乘法运算的复杂性,由于n * n * n,在每次迭代时会发生两次。另请注意T(2) = 2

T(2) = T(1) + 2
     = 0    + 2
     = 2

一般来说,这个算法的复杂度是O(2n),相当于O(n),算法可以写成一个简单的for循环:

s(n):
    r := 0
    for i := 1 to n
        r := r + i * i * i
    return r
相关问题