代码的完整性:数值的整数次方

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

public class Solution {
    public double Power(double base, int exponent) {
        double result = 1, curr = base;
        int n;
        if (exponent > 0) {
            n = exponent;
        } else if (exponent < 0) {
            if (base == 0)
                throw new RuntimeException("分母不能为0");
            n = -exponent;
        } else {// exponent==0
            return 1;// 0的0次方
        }
        while (n != 0) {
            if ((n & 1) == 1)
                result *= curr;
            curr *= curr;// 翻倍,n每移位一次就相当于平方一次
            n >>= 1;// 右移一位
        }
        return exponent >= 0 ? result : (1 / result);
  }
}

 

posted @ 2016-08-26 10:26  SaraMorning  阅读(160)  评论(0编辑  收藏  举报