想法:当 n为奇数时 n = (n-1)*n 当n 为偶数时 n= (n/2)(n/2)ge
编写代码如下
public double myPow(double x, int n) { if(n<0){ x= 1/x; }else { x=x; } return help(x,n); } double help(double x,int n){ if(n==1){ return x; } if(n%2==0){ double res = help(x,n/2); return res *res; }else{ double res = help(x,n-1); return res * x; } }
结果
修改后
public double myPow(double x, int n) { if(n==0){ return 1; } long N=(long)(n); N= Math.abs(N); if(n<0){ x= 1/x; }else { x=x; } return help(x,N); } double help(double x,long n){ if(n==1){ return x; } if(n%2==0){ double res = help(x,n/2); return res *res; }else{ double res = help(x,n-1); return res * x; } }