我试图弄清楚计算k ^ n值的函数的渐近运行时间,其中k和n是整数:
int Foo(k, n)
{
exp = 1; //constant time
for(int i=0; i<=n; i++){ //n times
newexp = 0; //constant time
for(int j=0; j<=k; j++) //n*k times
newexp = newexp + exp; //constant time
exp = newexp; //constant time
}
return(exp); //constant time
}
当 k 和 n 变得足够大时,运行时间是否变为O(n + k)?
答案 0 :(得分:0)
嵌套循环的复杂性计算为它们的产品而不是总和。如果n和k是输入(不是常数),那么复杂度是O(nk),如果其中一个是常数,则假设k是常数,则复杂度为O(n)