问题
实现函数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;
}
}
|