1 class Solution {
2 public:
3 double pow(double x, int n) {
4 // IMPORTANT: Please reset any member data you declared, as
5 // the same Solution instance will be reused for each test case.
6 if (x<0){
7 if (n % 2 == 0)
8 return pow(0-x, n);
9 return 0-pow(0-x, n);
10 }
11 if (x == 1)
12 return 1;
13 if (n == INT_MIN && x>1)
14 return 0;
15 if (n == INT_MAX && x < 1)
16 return 0;
17 if (n < 0){
18 n = 0 - n;
19 x = 1 / x;
20 return pow(x, n);
21 }
22 if (n == 0)
23 return 1;
24 if (n == 1)
25 return x;
26 int t = n / 2;
27 double a = pow(x, t);
28 if (n % 2 == 0)
29 return a*a;
30 return a*a*x;
31 }
32 };