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循环,返回所求值。 }
请问这里的递归有什么错误,如何修改,谢谢
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循环,返回所求值。 }
请问这里的递归有什么错误,如何修改,谢谢
解决方案 »
- 通过java中的类、对象和this分别调用方法有什么不同
- foreach 循环的问题
- 问个具体设计模式的问题
- JAVA程序安装
- java swing 浮动窗体解决方案
- ClassLoad.getResource的问题。
- 关于编码 utf-8 的问题,看了这么多帖子也没解决!
- java多线程,deque队列怎么用?
- "BorrowerInformation.java": Error #: 300 : class Persistent not found in class bo.BorrowerInformation
- 使用jbuilder4编译一个没有任何问题程序都报错,请高人看一下,错误显示在里面.
- 【请教】用JNative调用winscard.dll时的问题
- 一个简单的小问题
即在方法binaryDivider(double a,double b)中,当a,b等于一个定值时,例如:a=b=1,此时不能再递归而直接可以求解了。