版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/muzhixi/article/details/89316289
需要考虑底数与指数分别为正零负九种情况。
容易忽略的点:
1.整数次幂,不是正数次幂;
2.底数为零,指数为负;底数为零,指数为零;
3.比较base与零相等,要注意double类型的特殊性;
4.可以通过递归降低时间复杂度;
5.除2操作可以通过移位提高效率。
public static double Power(double base, int exponent) {
boolean isNegtive=false;
double anwser=-1.0;
if(exponent<0) {//若指数为负值,结尾特殊处理
isNegtive=true;
exponent=-1*exponent;
}
//首先计算非负次幂
if(exponent==0) anwser=1.0;
else if(exponent==1) anwser=base;
else if(exponent==2) anwser=base*base;
else if((exponent%2)!=0) anwser=Power(Power(base,exponent/2),2)*base;
else anwser=Power(Power(base,exponent/2),2);
if(!isNegtive) return anwser;
else {
if(anwser==0) return -1;//处理base为零的情况
return 1/anwser;
}
}