剑指 Offer 16. 数值的整数次方

剑指 Offer 16. 数值的整数次方

实现函数double Power(double base, int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。

  1. 示例 1:
  2. 输入: 2.00000, 10
  3. 输出: 1024.00000
  4. 示例 2:
  5. 输入: 2.10000, 3
  6. 输出: 9.26100
  7. 示例 3:
  8. 输入: 2.00000, -2
  9. 输出: 0.25000
  10. 解释: 2-2 = 1/22 = 1/4 = 0.25
  11. 说明:
  12. -100.0 < x < 100.0
  13. n 32 位有符号整数,其数值范围是 [−231, 231 1]

快速幂

class Solution {
    public double myPow(double x, int n) {
        if (x == 0) {
            return 0;
        }
        long b = n;
        double res = 1.0;
        if (b < 0) {
            x = 1 / x;
            b = -b;
        }
        while (b > 0) {
            if ((b & 1) == 1) {
                res *= x;
            }
            x *= x;
            b >>= 1;
        }
        return res;
    }
}