问题

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

示例1

1
2
输入: 2.00000, 10
输出: 1024.00000

示例2

1
2
输入: 2.10000, 3
输出: 9.26100

示例3

1
2
3
输入: 2.00000, -2
输出: 0.25000
解释: 2-2 = 1/22 = 1/4 = 0.25

快速幂解法

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
class Solution {
    public double myPow(double x, int n) {
        if(x == 0){
            return 0;
        }
        long newN = n;
        double res = 1.0;
        if(newN < 0) {
            x = 1 / x;
            newN = -newN;
        }
        while(newN > 0) {
            if((newN & 1) == 1){
                res *= x;
            }
            x *= x;
            newN /= 2;
        }
        return res;
    }
}