第一种方法:使用递归,时间复杂度O(logn)
- 当n为偶数,a^n =(a^n/2)*(a^n/2)
- 当n为奇数,a^n = a^[(n-1)/2] * a^[(n-1)/2] * a
第二种方法:累乘,时间复杂度为O(n)
public
class
Solution {
public
double
Power(
double
base,
int
exponent) {
if
(exponent==
0
)
return
1
;
if
(exponent==
1
)
return
base;
int
n = exponent;
if
(n<
0
)
n = -n;
double
s = Power(base, n>>>
1
);
s = s*s;
if
((n&
1
)==
1
)
s *= base;
return
exponent>
0
? s:
1
/s;
}
}