题目
Implement pow(x, n).
分析
最基本的快速幂。
实现
class Solution {
public:
double myPow(double x, int m) {
double ans=1;
int sign = 1;
long long n = m;
if(n<0){ x=1.0/x; n=-n;}
while(n>0){
if(n%2) ans*=x;
x *= x;
n /= 2;
}
return ans;
}
};
思考
处理指数是负数时需要注意。一个是abs(INT_MIN)>abs(INT_MAX),所以需要使用long long类型来保存指数。另一个是负数时取结果的倒数,但是这样不够优雅。更好的方法是负数的时候直接对底数x取倒数即可。