如何通过重复加法计算一个数的幂的渐近运行时间?
How to calculate the asymptotic running time of a power of a number by repeated addition?
function calculatePower(k,n) {
var power = 1;
for(var i =0;i<n;i++) {
var tempPower = 0;
for(var j=0; j<k;j++) {
for(var q=0; q<power; q++) {
tempPower++;
}
}
power = tempPower;
}
return power;
}
calculatePower(2,3);
如何计算这样的 运行 时间?它会是 O(k+k^2+....+k^n) 还是 O(k^n)?
由于 tempPower
将在 i
的每次迭代中启动到 0
,因此每次迭代都等于 k*power
。因此,power = k*power
代码的时间复杂度为 T(k,n) = k + k^2 + k^3 + ... + k^n = k^{n+1} - 2 = Theta(k^{n+1})
.
function calculatePower(k,n) {
var power = 1;
for(var i =0;i<n;i++) {
var tempPower = 0;
for(var j=0; j<k;j++) {
for(var q=0; q<power; q++) {
tempPower++;
}
}
power = tempPower;
}
return power;
}
calculatePower(2,3);
如何计算这样的 运行 时间?它会是 O(k+k^2+....+k^n) 还是 O(k^n)?
由于 tempPower
将在 i
的每次迭代中启动到 0
,因此每次迭代都等于 k*power
。因此,power = k*power
代码的时间复杂度为 T(k,n) = k + k^2 + k^3 + ... + k^n = k^{n+1} - 2 = Theta(k^{n+1})
.