题解 | 求解立方根
解题思路:
- 二分查找
- 有两个注意点:
- 正数和负数
- 在0~1,-1~0的区间内,两数相乘,其值越来越小
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
// 需要分情况考虑:
// 1. 正数 -> 分两种:0<x<1 x>1
// 2. 负数 -> 同样分两种: -1<x<0 x<-1
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
double num = in.nextDouble();
// 主要针对0<x<1的情况,在这个区间,相乘是不断变小的,其值范围是在0~1之间,最大值取0~1即可
double l = num > 0 ? 0 : (num < -1 ? num : -1);
double h = num > 0 ? (num > 1 ? num : 1) : 0;
double delta = 0.01;
while (h * h * h - num > delta) {
double mid = (h + l) / 2;
if (mid * mid * mid < num) {
l = mid;
} else if (mid * mid * mid > num) {
h = mid;
}
}
System.out.println(String.format("%.1f", h));
}
}
海康威视公司福利 1407人发布

查看4道真题和解析