leetcoder-50-Pow(x, n)
Pow(x, n)
能够直接用库函数pow(x,n)一步搞定,但明显这样就没意思了。 參考 快 速 幂 取 模
二分。复杂度为O(logn)
递归方法
class Solution {
public:
double myPow(double x, int n) {
if(n<0) return 1.0/myPow_1(x,-n);
else return myPow_1(x,n);
}
double myPow_1(double x,int n)
{
if(n==0) return 1.0;
double y=myPow_1(x,n/2); // 不能用n>>1 T_T 不知道什么原因
if(n&1) return y*y*x;
else return y*y;
}
};
位运算
class Solution {
public:
double myPow(double x, int n) {
if(n<0){
n=-n;
x=1.0/x;
}
double ans=1;
while(n){
if(n&1) ans=ans*x;
x=x*x;
n=n/2;
}
return ans;
}
};
posted on 2017-04-23 18:05 cynchanpin 阅读(136) 评论(0) 编辑 收藏 举报