首页 > 其他 > 详细

12.数值的整数次方

时间:2019-04-14 18:52:22      阅读:78      评论:0      收藏:0      [点我收藏+]

题目描述:

??给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。

思路分析:

??该题主要要考虑一些特例,分母不能为0,这种情况就是base为零,次数为负。然后就是求数值的整数次方时,我们应该采用时间复杂度低的方式。(base,exponent)=(base,exponent/2)*(base,exponent/2),按照这种方式将计算的规模缩小。

代码:

public class Solution {
    public double Power(double base, int exponent) {
        if(base==0&&exponent<0){  //防止分母出现0
            throw new RuntimeException();
        }
        int absexponent=Math.abs(exponent);
        double res=result(base,absexponent);
        if(exponent<0)
            res=1/res;
        return res;
  }
    public double result(double base,int absexponent){
        if(absexponent==0)
            return 1.0;
        if(base==1.0)
            return 1.0;
        double res=result(base,absexponent>>1);
        res=res*res;
        if((absexponent&1)==1)   //判断次数为奇数次还是偶数次
            res=res*base;        //次数如果为奇数的话, 最后应再乘一次base
        return res;
    }
}

12.数值的整数次方

原文:https://www.cnblogs.com/yjxyy/p/10706226.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!