****快速幂(Exponentiation by squaring)可以以o(logn)的时间复杂度来计算乘方。
1.递归算法
int squareEx(int a,int n)
{
if(n==0)
return 1;
if(n%2==1)
{
//奇数
return a*squareEx(a,n-1);
}
else
{
//偶数
int temp=squareEx(a,n/2);
return temp*temp;
}
}
2.非递归快速幂
int qpow(int a,int n)
{
int ans=1;
while (n)
{
if(n&1)
ans*=a;
a*=a;
n>>1;
}
return ans;
}