数值的整数次方

题目描述

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

保证base和exponent不同时为0

思路

普通迭代,时间复杂度O(n),空间复杂度O(1)。
折叠迭代,时间复杂度O(lgn),空间复杂度O(1)。

Java函数

public class Solution {
    public double Power(double base, int exponent) {
        return Math.pow(base, exponent);
  }
}

普通迭代

public class Solution {
    public double Power(double base, int exponent) {
        if(base == 0)    return 0;
        double ans = 1.0d;
        int e = exponent < 0 ? -exponent : exponent;
        while(e-- > 0) {
            ans *= base;
        }
        return exponent < 0 ? 1 / ans : ans;
  }
}

折叠迭代

public class Solution {
    public double Power(double base, int exponent) {
        if(base == 0)    return 0;
        double ans = 1.0d;
        int e = exponent < 0 ? -exponent : exponent;
        while(e > 0) {
            if(e%2 == 1) {
                ans *= base;
            }
            base *= base;
            e >>= 1;
        }
        return exponent < 0 ? 1 / ans : ans;
  }
}

你可能感兴趣的:(数值的整数次方)