50. Pow(x, n)

 1 class Solution 
 2 {
 3     double solve(double x, int n) //其中n为非负数
 4     {
 5         if(n == 0) return 1;
 6         double res = 1;
 7         for(int i = 1;i <= n;i ++) res *= x;
 8         return res;
 9     }
10 public:
11     double myPow(double x, int n) 
12     {
13         if(abs(x) <= 0.00001) return 0;
14 
15         if(x == 1) return 1;
16         if(x == -1)
17         {
18             if(n % 2 == 0) return 1;
19             else return -1;
20         }
21 
22         if(x > 0 && n == INT_MIN) return 0;
23         if(n >= 0) return solve(x,n);
24         else
25         {
26             double temp = fabs(n);
27             cout << solve(x,temp);
28             return 1.0/(double)solve(x,temp);
29         }
30     }
31 };

根据错误提示,不断调试

 

 1 class Solution 
 2 {
 3 public:
 4     double myPow(double x, int n) 
 5     {
 6         if(x == 0 || x == 1) return x;
 7         if(x == -1 && n % 2 == 0) return 1;
 8         if(x == -1 && n % 2 == 1) return -1;
 9         if(x > 1 && n == INT_MIN || x < 1 && n == INT_MAX) return 0;
10         
11         if(n == 0) return 1;
12         else if(n < 0) return 1 / myPow(x,-n);
13         else
14         {
15             if(n % 2 == 0) return myPow(x,n / 2) * myPow(x,n / 2);
16             else return myPow(x,n / 2) * myPow(x,n / 2) * x;
17         }
18     }
19 };

 

posted @ 2020-03-18 18:37  Jinxiaobo0509  阅读(119)  评论(0)    收藏  举报