Я работаю над недавним домашним заданием по информатике, включающим рекурсию и нотацию Big-O. Я полагаю, что понимаю это довольно хорошо (хотя, конечно, не идеально!) Но есть один конкретный вопрос, который доставляет мне больше всего проблем. Странно то, что, глядя на него, он выглядит самым простым в домашнем задании.
Укажите наилучшую скорость роста, используя обозначение big-Oh, для решения следующего случая?
T (1) = 2
T (n) = 2T (n - 1) + 1 для n> 1
И выбор:
- O (n log n)
- O (N ^ 2)
- O (2 ^ п)
- О (п ^ п)
Я понимаю, что большой O работает как верхняя граница, чтобы описать наибольшее количество вычислений или наибольшее время выполнения, которое займет эта программа или процесс. Я чувствую, что эта конкретная рекурсия должна быть O (n), поскольку, самое большее, рекурсия происходит только один раз для каждого значения n. Так как n недоступно, оно либо лучше, O (nlogn), либо хуже, так как остальные три варианта.
Итак, мой вопрос: почему это не O (n)?