leetcode - Pow(x, n)
2013-11-20 21:53 张汉生 阅读(196) 评论(0) 编辑 收藏 举报
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 };