1 public class Solution { 2 public double pow(double x, int n) { 3 // Start typing your Java solution below 4 // DO NOT write main() function 5 double result = 1.0; 6 if (n >= 0) 7 return cal(x, n); 8 else 9 { 10 n = -1 * n; 11 x = 1 / x; 12 return cal(x, n); 13 } 14 } 15 public double cal(double x, int n) 16 { 17 if (n == 0) 18 return 1.0; 19 else if (n == 1) 20 return x; 21 else if (x == 1.0) 22 return 1.0; 23 else if (x == -1.0) 24 { 25 if (n % 2 == 0) 26 return 1.0; 27 else 28 return -1.0; 29 } 30 if (n % 2 == 0) 31 { 32 double tmp = cal(x, n / 2); 33 return tmp * tmp; 34 } 35 else 36 { 37 double tmp = cal(x, (n - 1) / 2); 38 return tmp * tmp * x; 39 } 40 41 } 42 }