Пусть
L3 = войти в базу 3
L2 = Вход в базу 2
Тогда правильный ответ будет O (L3 (L2 (n)) и НЕ O (L2 (L2 (n))).
Начните с x = x * 2 . x будет экспоненциально увеличиваться, пока не достигнет n, что сделает сложность по времени O (L2 (n))
Теперь рассмотрим x = x * x . х увеличивается быстрее, чем выше. На каждой итерации значение x переходит на квадрат своего предыдущего значения. Делая простую математику, вот что мы получаем:
для х = 2
n = 4, итераций принято = 1
n = 16, выполнено итераций = 2
n = 256, выполнено итераций = 3
n = 65536, принятых итераций = 4
Таким образом, сложность времени составляет O (L2 (L2 (n)) . Вы можете убедиться в этом, поместив значения выше значений для n.
Теперь перейдем к вашей проблеме, x = x * x * x . Это будет увеличиваться даже быстрее, чем х = х * х. Вот таблица:
для х = 2
n = 8, выполнено итераций = 1
n = 512, итераций принято = 2
n = (512 * 512 * 512), выполненных итераций = 3 и т. д.
Если вы посмотрите на это внимательно, это окажется O (L3 (L2 (n)) . L2 (n) даст вам силу двух, но так как вы принимаете куб x в каждой итерации, вам нужно будет вести журнал к основанию 3, чтобы узнать правильное количество выполненных итераций.
Поэтому я думаю, что правильный ответ - O (log-to-base-3 (log-to-base-2 (n)) *
Обобщая это, если x = x * x * x * x * .. (k раз) , то сложность времени составляет O (log-to-base-k (log- к основанию-2 (п)