您的位置:首页 > 其它

leetcode50-Pow(x, n)(实现浮点数的幂运算)

2016-04-17 22:59 323 查看
问题描述:

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;
}
}
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: