Pow(x, n)

来源:互联网 发布:淘宝神舟旗舰店 编辑:程序博客网 时间:2024/06/05 04:29

思路:在提交的时候,各种奇葩的测试数据,不得不加很多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;    }}
0 0
原创粉丝点击