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