题解 | #数值的整数次方#

数值的整数次方

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;
    }
}

图片说明

全部评论

相关推荐

11-05 07:29
贵州大学 Java
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务