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 };
Mamba never out

浙公网安备 33010602011771号