(初学Java者,正在学用循环语句,求解)
思路:
令 r 从 0 开始,逐步增长,直到 r * r * r >= 3 时……
(初学Java者,正在学用循环语句,求解)
思路:
令 r 从 0 开始,逐步增长,直到 r * r * r >= 3 时……
使用二分法.
先定出区间的上下限, 对于实数 n, 设其立方根为 x,
若 n > 1, 则一定有 1 < x < n;
若 0 < n < 1, 则有 0 < x < 1;
对于 n = 3 的情况, low = 1, up = n;
然后取两者的平均值, ave = low + (up - low) / 2.0;
计算 ave 的立方, 若立方 < n, 则说明 ave < x < up, 于是, 下限变为 ave;
否则有 low < x < ave, 上限变为 ave;
根据大小关系, 缩小 (low, up) 的范围, 直到 up - low < 1e-4.
import java.util.Scanner;
class Major {
public static void main(String[] argv) {
Scanner scn = new Scanner(System.in);
final double ER = 1e-4;
boolean neg = false;
double n = scn.nextDouble();
if (0 > n) {
neg = true;
n = -n;
}
double up = n;
double low = 1.0;
if (n < 1) {
up = 1.0;
low = n;
}
double dis = 0;
double ave = 0;
while (ER < (dis = up - low)) {
ave = low + dis / 2.0;
if (ave * ave < n / ave) {
low = ave;
} else {
up = ave;
}
}
if (neg) {
ave = -ave;
}
scn.close();
System.out.println("Ans= " + ave);
}
}