[LeetCode]050-Pow(x,n)

题目:
Implement pow(x, n).
实现x的n次幂

Solution:
类似于二分的方法来优化“x*x*…x“。
要注意的是当n = INT_MIN时,反过来-n会越界,这时候需要pow(x,INT_MIN) * x 即可。

代码如下:

class Solution {
public:
    double myPow(double x, int n) 
    {
        if(n == 0 || x == 1)
            return 1.0;
        if(n < 0)
        {
            if( n == INT_MIN)
                return 1.0 / (myPow(x,INT_MAX) * x);
            else
                return 1.0 / myPow(x,-n);
        }
        double half = myPow(x,n>>1);

        if(n % 2 == 0)
            return half * half;
        else
            return half * half * x;

    }
};

你可能感兴趣的:(LeetCode)