今天開始學Java 計算一個數字的立方根,不使用庫函式
題目描述
•計算一個數字的立方根,不使用庫函式
詳細描述:
•介面說明
原型:
public static double getCubeRoot(double input)
輸入:double 待求解引數
返回值:double 輸入引數的立方根
輸入描述:
待求解引數 double型別
輸出描述:
輸入引數的立方根 也是double型別
示例1輸入
216
輸出
6.0
方法一:使用牛頓迭代法:
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
double n = sc.nextDouble();
double e = 0.000001;
double a =n;
double a1 = (2*a+n/a/a)/3;
while(Math.abs(a1*a1*a1-n)>e){
a1 = (2*a1+n/a1/a1)/3;
}
System.out.printf("%.1f",a1);
System.out.println();
}
}
}
方法二:萬能的二分法
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
double n = sc.nextDouble();
System.out.printf("%.1f",getCubeRoot(n));
}
}
public static double getCubeRoot(double input){
double min = 0;
double max = input;
double mid =0;
while((max-min)>0.0001){
mid =(max+min)/2;
if(mid*mid*mid>input){
max = mid;
continue;
}
if(mid*mid*mid<input){
min = mid;
continue;
}
return mid;
}
return max;
}
}