问题描述:
Implement pow(x, n).
实现浮点类型的幂运算。
问题求解:
方法一:递归,O(n)解法。
class Solution {
public:
double myPow(double x, int n) {
if(n==0)
return 1.0;
if(n<0)
{
if(n==INT_MIN)
return 1.0 / (pow(x,INT_MAX)*x);//!!!
else
return 1.0/pow(x,-n);
}
return x*pow(x,n-1);
}
};
方法二:递归,O(logn)解法。
class Solution {
public:
double myPow(double x, int n) {
if(n==0)
return 1.0;
if(n<0)
{
if(n==INT_MIN)
return 1.0 / (myPow(x,INT_MAX)*x);//!!!
else
return 1.0/myPow(x,-n);
}
else
{
if(n%2==0)
{
double tmp=myPow(x, n>>1);
return tmp*tmp;
}
else
{
double tmp=myPow(x, (n-1)>>1);
return x*tmp*tmp;
}
}
}
};