数值的整数次方 --剑指offer

给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
 
保证base和exponent不同时为0
方法一:
注意指数为负的情况。正常迭乘 时间复杂度为0(n);
public class Solution {
    public double Power(double base, int exponent) {
        if(base == 0){
            return 0;
        }
        if(exponent == 0){
            return 1;
        }
        double result = base;
        int flag=0;
        if(exponent < 0){
            flag =1;
            exponent=-exponent;
        }
        for(int i =1;i <exponent;i ++){
           result *= base;
        }
        return flag == 1?1/result:result;
  }
}

方法2:用快速幂方法  

参考博客:https://www.cnblogs.com/lca1826/p/6748372.html 

public class Solution {
    public double Power(double base, int exponent) {
        if(base == 0){
            return 0;
        }
        if(exponent == 0){
            return 1;
        }
        double result=1.0;
        int expo=exponent;
        if(exponent < 0){
            expo=-exponent;
        }
        while(expo!=0){
            if( (expo&1)!=0){
                result *= base;
            }
            base *= base;
            expo=expo>>1;
        }
        return exponent >0?result:(1/result);
  }
}
原文地址:https://www.cnblogs.com/nlw-blog/p/12420444.html