实现 pow(x, n) ,即计算 x 的 n 次幂函数(即 x n x^n xn )。
示例 1:
输入:x = 2.00000, n = 10
输出:1024.00000
示例 3:
输入:x = 2.00000, n = -2
输出:0.25000
解释:2-2 = 1/22 = 1/4 = 0.25
注意:n需要换成long型,当 − 2 31 -2^{31} −231转换成整数时,int型会溢出。
方法一:(快速幂+递归)
class Solution {
public double myPow(double x, int n) {
long N = n;
return N > 0 ? help(x, N) : 1.0 / help(x, -N);
}
private double help(double x, long N) {
//递归+快速幂
if(N == 0) {
return 1;
}
double y = help(x, N / 2);
return N % 2 == 1 ? y * y * x : y * y;
}
}
方法二:(快速幂+迭代)
class Solution {
public double myPow(double x, int n) {
long N = n;
return N > 0 ? help(x, N) : 1.0 / help(x, -N);
}
private double help(double x, long N) {
double ans = 1;
double tmp_x = x;
while(N > 0) {
if(N % 2 == 1) {
ans *= tmp_x;
}
tmp_x *= tmp_x;
N /= 2;
}
return ans;
}
}