题目:

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

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

解题思路:

下面的讨论中 x 代表 base,n 代表 exponent.

因为 (x*x) 可以通过递归求解,并且每次递归 n 都减小一半,因此整个算法的时间复杂度为 O(logN)。

 剑指offer-16 数值的整数次方 随笔

public double Power(double base, int exponent){
        if(exponent == 0)
      return 1;
    if(exponent == 1 )
      return base;
    boolean isNegative = false; 
    if(exponent < 0){
            exponent = -exponent;
        isNegative = true;
    }
    double pow = Power(base * base, exponent / 2);
    if(exponent % 2  != 0)
      pow = pow * base;
    return isNegative ? 1 / pow : pow ;
}
扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄