在没有任何数学库函数的情况下,求一个数 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)); } } }