java 實現二分法求開平方根
思想:通過二分查找不斷縮小值的范圍,根據精確的位數求的無限接近的平方根。
public static void main(String[] args) {
System.out.println("start: " + new Date().getTime());
double num = 0.16;
double temp = 0;
if(num > 1) {
temp = execute(0, num, num);
} else { // 大於0小於1的值
temp = execute(0, 1, num);
}
System.out.println("end: " + new Date().getTime());
System.out.println(temp);
}
/**
* desc: 二分法計算開平方根
* @param min 最小區間值
* @param max 最大區間值
* @param num 被開平方數
* @return
*/
public static double execute(double min, double max, double num) {
double temp = (min + max) / 2.0; // 求得中間值
if (max-min <= 0.000001) { // 精確的位數
return temp;
} else if (temp * temp > num) { // 判斷區間值
return execute(min, temp, num); // 遞歸調用
} else if (temp * temp < num) {
return execute(temp, max, num);
} else {
return temp;
}
}
請多指教!