问题描述:
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;
}
}
}
};
本文介绍了两种方法来实现浮点类型的幂运算:递归方法,包括O(n)解法和O(logn)解法。重点在于解决负指数情况下的特殊处理,确保算法的正确性和效率。
484

被折叠的 条评论
为什么被折叠?



