LeetCode OJ:Pow(x, n) (幂运算)

Implement pow(xn).

幂运算,简单的方法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 }
原文地址:https://www.cnblogs.com/-wang-cheng/p/4876498.html