50. Pow(x,n)
Input: x = 2.00000, n = 10
Output: 1024.00000Input: x = 2.10000, n = 3
Output: 9.26100Input: x = 2.00000, n = -2
Output: 0.25000
Explanation: 2-2 = 1/22 = 1/4 = 0.25Last updated
Input: x = 2.00000, n = 10
Output: 1024.00000Input: x = 2.10000, n = 3
Output: 9.26100Input: x = 2.00000, n = -2
Output: 0.25000
Explanation: 2-2 = 1/22 = 1/4 = 0.25Last updated
public double myPow(double x, int n) {
if (x == 1) return 1;
if (n == 0) return (double) 1;
if (n == 1) return x;
if (n < 0) return 1 / myPow(x, -n);
if (n % 2 == 1) return x * myPow(x, n - 1); // 比如x的3次方,可以转化成x*myPow(x,2)
else {
double curr = myPow(x, n / 2); //比如n的4次方,可以转化成mypow(n, 2),在下一步再把这个结果^2.
return curr * curr;
}
}public double myPow(double x, int N) {
long n = Long.valueOf(N); // 注意这里
if (x == 1) return 1;
if (n == 0) return (double) 1;
if (n == 1) return x;
if (n < 0) {
x = 1 / x;
n = -n;
}
double ans = 1;
while (n > 0) {
if (n % 2 == 1) ans *= x;
x *= x;
n /= 2;
}
return ans;
}