我已经非常善于计算时间复杂度,但我仍然对如何确定指数时间算法感到困惑。下面的算法具有最差情况下的运行时间O(k ^ n)。他们是如何获得这个价值的?第一个for循环占用 n 时间,第二个for循环占用 k 时间,而第三个for循环 q 时间令人困惑。如果运行时间 n * k * q -something,他们是如何获得O(k ^ n)的?
int exp(k, n) {
power = 1
for i = 1 to n {
newpower = 0
for j = 1 to k {
for q = 1 to power {
newpower++
}
}
power = newpower
}
return (power)
}