题目描述:
求base的exp次方,其中base可以是double,exp为整数(可正,可负,可零)
思路解析:
快速幂算法,求一个数a的n次方,
(1)当n为偶数时,等于a^(n/2) * a^(n/2)
(2)当n为奇数时,等于a^(n-1)/2 * a^(n-1)/2 *a
判断一个数的奇偶性,不但可以使用%2,也可以使用 &1。与运算效率更高。
public double Power(double base, int exponent) {
double result = 1,curr = base;
int exp;
if(exponent>0){
exp = exponent;
}else if(exponent<0){
exp = -exponent;//负数转正数
}else{
return 1;
}
while(exp!=0){
if((exp&1)==1)
result*=curr;
curr*=curr;// 翻倍
exp>>=1;// 右移一位
}
return exponent>=0?result:(1/result);
}