006.二分法求解快速幂 LeetCode:50. Pow(x, n)

本题是一道典型的二分法求解快速幂问题的方法,但是由于Leetcode上的bug,给出的模板是int参数,但是测试用例却具有long long大小的参数,所以这里需要注意,并且要加以修改。
class Solution {
public:
    double help(double x,uint64_t n)
    {
        if(n==1)
        {
            return x;
        }
        if(n%2==0)
        {
           double half=help(x,n/2);
           return half*half;
        }
        else
        {
           double half=help(x,n/2);
           return half*half*x;
        }
    }
    double myPow(double x,long long n)
    {
        if(n==0||x==1)
        {
            return 1;
        }
        if(n<0)
        {
            return 1/help(x,-n);
        }
        else
        {
            return help(x,n);
        }
    }
};

猜你喜欢

转载自blog.csdn.net/dosdiosas_/article/details/106225632
今日推荐