导航

LeetCode Implement pow(x, n).

Posted on 2016-09-19 23:50  CSU蛋李  阅读(156)  评论(0编辑  收藏  举报

这个题目我也没有思路,同学们可以查看这个http://www.cnblogs.com/NickyYe/p/4442867.html

 

下面是我改进后的代码

第一种方法:

class Solution {
public:
    double myPow(double x, int n) {
        if (0 == n)return 1;
        double half = myPow(x, n / 2);
        if (!(n % 2))
            return half*half;
        else if (n>0)
        {
            return half*half*x;
        }
        else
        {
            return half*half*(1 / x);
        }
    }
};

第二种方法:

if (0 == n)return 1;
        double result = 1.0;
        bool tag = false;
        double num=1.0;
        if(n==-2147483648)
        {
            n=1+n;
            num=x;
        }
        if (n<0)
        {
            n = -n;
            tag = true;
        }
        while (n)
        {
            if (n & 1)
            {
                result *= x;
            }
            x = x*x;
            n = n >> 1;
        }
        if (tag)
        {
           if(0.999999<num&&num<1.000001)
            return 1 / result;
            else return 1/result*num;
        }
        if(0.999999<num&&num<1.000001)
        return result;
        else return result*num;
    }
};