如何通过重复加法计算一个数的幂的渐近运行时间?

时间:2019-06-05 21:15:53

标签: javascript algorithm time-complexity big-o complexity-theory

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)的行吗?

1 个答案:

答案 0 :(得分:1)

由于tempPower将在0的每个迭代中被初始化为i,因此每个迭代将等于k*power。因此,power = k*power和代码的时间复杂度将为T(k,n) = k + k^2 + k^3 + ... + k^n = k^{n+1} - 2 = Theta(k^{n+1})