Вам также необходим базовый случай для отношения повторения.
T(1) = c
T(n) = T(n-1) + n
Чтобы решить эту проблему, вы можете сначала угадать решение, а затем доказать, что оно работает, используя индукцию.
T(n) = (n + 1) * n / 2 + c - 1
Сначала базовый случай. Когда n = 1, это дает c как требуется.
Для других n:
T(n)
= (n + 1) * n / 2 + c - 1
= ((n - 1) + 2) * n / 2 + c - 1
= ((n - 1) * n / 2) + (2 * n / 2) + c - 1
= (n * (n - 1) / 2) + c - 1) + (2 * n / 2)
= T(n - 1) + n
Итак, решение работает.
Чтобы получить предположение в первую очередь, обратите внимание, что ваши отношения повторяемости генерируют треугольные числа , когда c = 1:
T(1) = 1:
*
T(2) = 3:
*
**
T(3) = 6:
*
**
***
T(4) = 10:
*
**
***
****
etc..
Интуитивно, треугольник составляет примерно половину квадрата, и в обозначениях Big-O константы можно игнорировать, поэтому O (n ^ 2) - ожидаемый результат.