题解 | #数值的整数次方#
数值的整数次方
http://www.nowcoder.com/practice/1a834e5e3e1a4b7ba251417554e07c00
方法1 递归+快速幂
2的8次方只需要求一次2的四次方两数相乘即可
如果次方数是个奇数的话再乘个base
class Solution {
public double Power(double base, int exponent) {
if (exponent<0){
base=1/base;
exponent=-exponent;
}
return power1(base,exponent);
}
public double power1(double b,int e){
if (e==0){
return 1;
}
double ret=power1(b,e/2);
if ((e&1)>0){
//如果是奇数
return ret*ret*b;
}else {
return ret*ret;
}
}
}
方法2快速幂 +非递归
class Solution {
public double Power(double base, int exponent) {
if (exponent<0){
base=1/base;
exponent=-exponent;
}
double x=base;
double res=1.0 ;
while (exponent>0){
if ((exponent&1)>0){
//当前位为1要用
res*=x;
}
x*=x;//计算下一位
exponent=exponent>>1;
}
return res;
}
}

