本题是一道典型的二分法求解快速幂问题的方法,但是由于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);
}
}
};