2014-09-07 2 views
0

Я дал этот алгоритм для вычисления суммы первых п кубов:Count # времени основной работы выполняется

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

Сложность заключается в сложности выполнения операции умножения, которая происходит дважды на каждой итерации из-за n * n * n. Также отметим, что T(2) = 2:

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

В целом сложность этого алгоритма является O(2n) что эквивалентно O(n), и алгоритм может быть записан в виде простой цикл:

s(n): 
    r := 0 
    for i := 1 to n 
     r := r + i * i * i 
    return r 
+0

Заметим, что Т (0) является не определено, но T (3) = 4. Причина, по которой его +2 обусловлено тем, что 2 операции необходимо умножить на 3 числа? –

+0

Извините, я прочитал его как 'T (0) = 0', но умножение происходит дважды на каждом уровне, n * n * n', то есть два умножения не один, поэтому' T (3) = T (2) + 2 = T (1) + 2 + 2 = 4'. – mpcabd

Смежные вопросы