public class binDivider {
private static final double A = 1;
private static final double B = 0;
private static final double C = -1;
private static final double D = -1;
private static double mid = 0; public static double f(double x) {
return A * x * x * x + B * x * x + C * x + D;
} public static double abs(double d) {
return d > 0 ? d : -d;
} public static void binaryDivider(double a, double b) {
mid = (a + b) / 2;
while (abs(mid - b) > 0.0001) // ξ为对于所得解x0,我们所要求满足的精度;
{
if (f(mid) * f(b) > 0) {
binaryDivider(a, mid); // 把mid代入b,重新计算
} else if (f(mid) * f(b) < 0) {
binaryDivider(mid, b); // 把mid代入a,重新计算
} else {
System.out.println("exact result!"); // 最后一种情况为f(mid)=0;即mid是该方程组的精确解
return;
}
}
return;
// 计算完毕,在abs(mid-b)<=ξ时,跳出while循环,返回所求值。 }
请问这里的递归有什么错误,如何修改,谢谢