剑指offer-12-数值的整数次方 -- Java实现

题目

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

保证base和exponent不同时为0

分析

思路一:

在这里插入图片描述

代码:

public class Solution {
    public double Power(double base, int exponent) {
        double res = 1;
        int curExp;
        if(exponent > 0) {
            curExp = exponent;
        } else if (exponent < 0) {
            if(base == 0) {
                throw new RuntimeException("基数不能为0");
            }
            curExp = -exponent;
        } else {
            return 1;
        }
        
        while(curExp != 0) {
            if((curExp & 1) == 1) {
                res *= base;
            }
            base *= base;//翻倍
            curExp >>= 1;
        }
        
        return exponent > 0 ? res : (1/res);
  }
}

猜你喜欢

转载自blog.csdn.net/weixin_42054926/article/details/106072358