2015-02-21 8 views

ответ

2

Вы правы, это O(lg(lg n)) где lg обозначает основание 2 логарифм.

Причина, заключающаяся в том, что последовательность значений i подчиняется правилу i = prev(i) * prev(i), которое оказывается для 2, 2, 2, 2, 4, 2, 8, ... для этапов 1, 2, 3 , 4, .... Иными словами, значение i после k итераций - 2^{2^k}.

Таким образом, цикл прекратится, как только 2^{2^k} > n или k > lg(lg(n)) (Просто lg два раза в обе стороны неравенства. Неравенство остается в силе, поскольку lg является возрастающей функцией.)

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