lc50-Pow(x, n)

注意负号的corner case,以及INT_MIN

1
2
3
4
5
6
7
8
9
10
11
12
class Solution {
public:
double myPow(double x, int n) {
// if (n<0) return 1/x*myPow(1/x, -(n+1));
if (n==1) return x;
if (!n) return 1;
double m = myPow(x, n/2);
double t = (n<0)?1/x:x;
if (n%2) return m*m*t;
else return m*m;
}
};
1
2
3
4
5
6
7
8
9
10
11
class Solution {
public:
double myPow(double x, int n) {
if (n<0) return 1/x*myPow(1/x, -(n+1));
if (n==1) return x;
if (!n) return 1;
double m = myPow(x, n/2);
if (n%2) return m*m*x;
else return m*m;
}
};