Difficulty: Medium
Implement pow(x, n).
class Solution {
public:
double myPow(double x, int n) {
double ans=1;
long long n1=n;
if(n1==0 || x==1) return 1;
else if(x==-1) return n%2==0?1:-1;
else if(n1<0){
x=1.0/x;
n1*=-1;
}
for(long long i=0; i<n1; i++){
if(ans==0) return 0;
ans*=x;
}
return ans;
}
};
定义long long int n1来存储指数部分,避免正负转换时溢出。
首先判断x是否为0、1、-1,指数是否为0的特殊情况,再进行迭代计算。计算中判断中间结果是否为0,为0可直接返回。