思路:在提交的时候,各种奇葩的测试数据,不得不加很多if语句来判断。其次,要注意浮点比较大小不能用==,最好自己写个equal方法。
public class Solution {
public double pow(double x, int n) {
if(equal(x,0)) return 0;
if(equal(n,0)) return 1;
if(equal(x,1)) return 1;
if(equal(x,-1)) return (n&1)==1?-1:1;
return getPow(x,n);
}
public double getPow(double x,int n){
int m=n;
if(n<0) {
m=(-n);
}
double res=1;
for(int i=1;i<=m;i++){
res*=x;
if(equal(res,0)) break;
}
if(n>0) return res;
else return (1/res);
}
boolean equal(double a,double b){
if(a-b<0.0000000001 && a-b>-0.0000000001){
return true;
}
else return false;
}
}
594

被折叠的 条评论
为什么被折叠?



