int aux(int n, int x) {
while (x < n) {
x *= x;
}
return x;
}
int func(int n) {
return aux(n, 2);
}
为什么func
函数的时间复杂度为O(log(log(n)))
?
答案 0 :(得分:2)
由于x
从2
开始,我们在每一步都是正方形,所以它遵循以下顺序:
2^(2^0), 2^(2^1), 2^(2^2), ..., 2^(2^k), 2^(2^k) * 2^(2^k) = 2^(2^(k + 1)) ...
只要2^(2^k) <= n
=&gt;,循环就会继续2^k <= log(n)
=&gt; k <= log(log(n))