java双返回
我写了这个函数,但我真的不明白为什么我有这个输出 功能:java双返回,java,algorithm,Java,Algorithm,我写了这个函数,但我真的不明白为什么我有这个输出 功能: double itr = 1.0; public double findClosestXupper(double xone, double fxone) { double xtwo, fxtwo; xtwo = xone + itr; fxtwo = xtwo - Math.pow(xtwo, 2); if(fxone < 0) { if(fxtwo < 0) {
double itr = 1.0;
public double findClosestXupper(double xone, double fxone) {
double xtwo, fxtwo;
xtwo = xone + itr;
fxtwo = xtwo - Math.pow(xtwo, 2);
if(fxone < 0) {
if(fxtwo < 0) {
System.out.println("check1 " + xtwo + " " + fxtwo);
xtwo = xone - itr;
fxtwo = xtwo - Math.pow(xtwo, 2);
System.out.println("check2 " + xtwo + " " + fxtwo);
if(fxtwo < 0) {
itr = itr + 1.0;
System.out.println("check3 " + xtwo + " " + fxtwo);
findClosestXupper(xone, fxone);
}
}
}
System.out.println("check4 " + xtwo + " " + fxtwo);
return xtwo;
}
为什么check4显示三次?000000000000002从哪里来?
谢谢大家! 之所以会显示3次“check4”,是因为
findClosestXupper
在其自身内被调用了3次。第一次,所有案例都成立,并且findClosestXupper(xone,fxone)代码>被调用。在第二次调用中,所有情况再次保持为true,从而导致对findClosestXupper(xone,fxone)的第二次调用代码>。在第三次呼叫中,案例不成立,打印“check4”,然后第三次呼叫返回。这将导致第二个调用完成其调用并返回其“check4”,然后返回并导致第一个调用也完成并返回第一个“check4”。我们之所以看到略微任意的尾随十进制值,是因为浮点精度。更多关于这方面的信息,请参见。1。因为您使用的是无返回的递归。2.因为双打不精确,所以用双打代替
check1 4.2 -13.440000000000001
check2 2.2 -2.6400000000000006
check3 2.2 -2.6400000000000006
check1 5.2 -21.840000000000003
check2 1.2000000000000002 -0.2400000000000002
check3 1.2000000000000002 -0.2400000000000002
check1 6.2 -32.24
check2 0.20000000000000018 0.16000000000000011
check4 0.20000000000000018 0.16000000000000011
check4 1.2000000000000002 -0.2400000000000002
check4 2.2 -2.6400000000000006