50. Pow(x, n)

来源:互联网 发布:网络歌曲想问问你慢四 编辑:程序博客网 时间:2024/06/06 06:36

Implement pow(x, n).

class Solution {public:    double myPow(double x, int n) {        // 递归终止        if (n == 0) return 1.0;        if (n == 1) return x;        // 解决溢出        if (n == INT_MIN) return 1.0 / (myPow(x, INT_MAX)*x);        if (n < 0) return 1.0 / myPow(x, -n);        // n>0 ,递归过程        double half = myPow(x, n / 2);        return half * half * myPow(x, n % 2);    }};

值得注意的

当n为INT_MIN(21474836471),即int的最小值,如果不做处理也就是先取负再按正整数次方进行求解,也就是要求x21474836478,而我们知道有符号的int型最大值INT_MAX才只能达到2147483647,此时就会出现int溢出问题,因此需要特殊处理。

原创粉丝点击