普通方法求乘方时间复杂度是θ(n);
采用分治法求乘方时间复杂度是θ(log n)--------->这里是以2为底n的对数。
其实现代码如下:
class Power{
public int power(int x,int n) {
if(n==1)
return x;
if(n%2==0) { //n为偶数
int a=power(x,n/2);
return a*a;
}
else { //n为奇数
int a=power(x,(n-1)/2);
return a*a*x;
}
}
}
[点击并拖拽以移动]
关于如何算出它的时间复杂度的,如下:
T(n)=T(n/2)+θ(1);
其中T(n/2)为子问题的规模,θ(1)为代码中(a*a或a*a*x)所有时间的大小。再用主定理求出其时间复杂度。