50. Pow(x, n)
程序员文章站
2022-07-15 12:47:57
...
链接:https://leetcode-cn.com/problems/powx-n/
class Solution {
public:
double myPow(double x, int n) {
if (n == 1) return x;
if (n == 0) return 1;
if (n<0 && n==INT_MIN) {
return 1/myPow(x, INT_MAX)*x;
}
if (n<0) {
return 1/myPow(x, -n);
}
if (n&1) {
return x*myPow(x, n-1);
}
return myPow(x*x, n>>1);
}
};
class Solution {
public:
double myPow(double x, int n) {
double result = 1;
if (n < 0) {
x = 1/x;
if (n == INT_MIN) {
result *= x;
n = INT_MAX;
} else {
n = -n;
}
}
while(n) {
// n是奇数
if(n&1) {
result *= x;
}
x *= x;
n >>= 1;
}
return result;
}
};