我已经获得了这个算法来计算n个第一个立方体的总和:
s(n) {
if (n == 1) {
return 1
} else {
return s(n - 1) + n * n * n
}
}
要计算执行基本操作的次数,我被要求使用以下递归关系:T(1) = 0
和T(n) = T(n - 1) + 2
有人可以向我解释为什么这种关系看起来像这样,更确切地说:数字2来自哪里?
我认为n = 2
T(2) = 1
,因为乘法只执行一次,但根据公式T(2) = 2
。
答案 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