考虑此循环:
// i^k as in i raised to the power of k
for (int i = 2; i <= n; i = i^k) {
// some O(1) expressions or statements
}
为什么要运行log_k(log(n))
次?
[如果您将
t
视为循环中的迭代次数,则找到最大
t
以使以下不等式成立(我们还认为
n
足够大,以致不违反不等式:]]
您可以看到,迭代次数t
等于问题中指定的时间复杂度。
在您的问题中,我们想知道for循环经过了多少次,因此我们必须找到此等式的x:2^x^k=2^k^x= n
,因此我们有x^k = log(n)
而不是x = logk(log(n))
。