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

数值的整数次方

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

图片说明

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-11 11:00
点赞 评论 收藏
分享
05-19 15:21
已编辑
门头沟学院 Java
白火同学:你才沟通了200,说实话,北上广深杭这里面你连一座城市的互联网公司都没投满呢,更别说还有各种准一线二线城市了。等你沟通突破了三位数,还没结果再考虑转行的事吧。
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-10 13:54
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务