浮点数的整数次方

版权声明:本文为博主原创文章,未经博主允许不得转载。 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;
        }
    }

猜你喜欢

转载自blog.csdn.net/muzhixi/article/details/89316289