在没有任何数学库函数的情况下,求一个数 m 开 n 次方的结果。
import java.util.Scanner;
public class Main {
public static double quickMul(double x, int N) {
if (N == 0) {
return 1.0;
}
double y = quickMul(x, N / 2);
return N % 2 == 0 ? y * y : y * y * x;
}
public static double mySqrt(double m, int n){
double eps = 10E-14;
double l = 0;
double r = m;
while(Math.abs(r-l)>=eps){
double mid= l+(r-l)/2;
double tmp=quickMul(mid,n);
if(tmp>m){
r=mid;
}else{
l=mid;
}
}
return l;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
double m = sc.nextDouble();
int n = sc.nextInt();
System.out.println(mySqrt(m, n));
}
}
}