Прежде всего, обратите внимание, что у вас есть встроенный counter
, который будет записывать, сколько именно итераций выполняется. Где ваши эксперименты по этому фактору? Как counter
реагирует, когда n
увеличивается до очень больших чисел? Это, в двух словах, эмпирическое определение сложности.
Рассмотрим цикл , а не просто оператор заголовка. весь цикл управления равен
i = 1
while i < n
...
i *= 2 // i = 4*i / 2
Эквивалент
for (i = 1; i < n; i *= 2)
Таким образом, ваш внутренний цикл действительно O (log2 (n)) .
Во внутреннем цикле x
никогда не используется; Вы можете полностью отбросить это вычисление. Все, что делает цикл - это подсчитывает количество итераций.
Вызов подпрограммы с различными значениями n
; распечатать результаты.