实现 pow(x, n) ,即计算 x 的整数 n 次幂函数(即,xn )。
示例 1:
输入:x = 2.00000, n = 10
输出:1024.00000示例 2:
输入:x = 2.10000, n = 3
输出:9.26100示例 3:
输入:x = 2.00000, n = -2
输出:0.25000
解释:2-2 = 1/22 = 1/4 = 0.25题解
递归解法
对于pow(x,n)
- 如果n为0,则返回1
 - 如果n为1,则返回x
 - 如果N == 2,则返回x*x
 - 如果n小于0,则x = 1.0/x,且:
 
- 如果n为INT_MIN,则返回x*pow(x,(n+1)*-1),因为INT_MIN直接*-1会导致溢出
 - 否则返回mypow(x,n*-1)
 
- n大于2
 
- 如果n为基数,返回 x*mypow(x,n-1)
 - 如果n为偶数,返回mypow(x*x,n/2)
 
代码如下:
class Solution {
public:
    double myPow(double x, int n) {
        if (n == 0)
        {
            return 1;
        }
        if (n == 1)
        {
            return x;
        }
        if (n == 2)
        {
            return x * x;
        }
        if (n < 0)
        {
            x = 1.0/x;
            if (n == INT_MIN)
            {
                return x*myPow(x,(n+1)*-1);// <-------- 防止溢出
            }
            return myPow(x,n*-1);
        }
        if (n % 2 == 1)
        {
            return x*myPow(x,n-1);
        }        
        return myPow(x*x,n/2);
    }
};









