原题如下:
以上题目,如果不考虑时间的话,那么这一题有个最简单的解决办法:
package medium.myPow;
public class Main {
public static double myPow(double x,int n){
double result=1.0;
if(n==0){
return 1;
}
if(n<0){
for (int i = 0; i < -n; i++) {
result=result*x;
}
return 1.0/result;
}
for (int i = 0; i < n; i++) {
result=result*x;
}
return result;
}
public static void main(String[] args) {
System.out.println(Main.myPow(2.0000,-10));
}
}
下面介绍官方推荐的分织法:
class Solution {
public double myPow(double x,int n){
long N=n;
return N>=0?quickMul(x,N):1.0/quickMul(x,-n);
}
public double quickMul(double x,long N){
if(N==0){
return 1.0;
}
double y=quickMul(x,N/2);
return N%2==0?y*y:y*y*x;
}
}