代码改变世界

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 };