LeetCode OJ:Pow(x, n) (幂运算)
Implement pow(x, n).
幂运算,简单的方法snag然很好实现,直接循环相乘就可以了,但是这里应该不是那种那么简单,我的做法使用到了一点递归:
1 class Solution { 2 public: 3 double myPow(double x, int n) 4 { 5 if(n == INT_MIN) 6 return 1.0/(x * myPow(x, INT_MAX)); //这里考虑了一下由于传参数的限制还是将其变成INT_MAX 7 if(n < 0) 8 return 1.0/myPow(x, -n); 9 if(n == 0) 10 return 1.0; 11 double half = myPow(x, n/2), ret = 0.0; 12 if(n%2) 13 return half * half * x; 14 return half * half; 15 } 16 };
这里有个注意点就是考虑到INT_MIN的情况,做出相应的处理
下面是java写的版本:
1 class Solution { 2 public double myPow(double x, int n){ 3 if(n == Integer.MIN_VALUE) 4 return 1.0/(x*myPow(x, Integer.MAX_VALUE)); 5 if(n < 0) 6 return 1.0/myPow(x,-n); 7 if(n == 0) 8 return 1.0; 9 double half = myPow(x, n/2); 10 if(n%2 == 1) 11 return half * half * x; 12 return half * half; 13 } 14 }