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;
}
};
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-10-13 01:53:29