gpt4 book ai didi

Java binarySearch 返回被忽略

转载 作者:行者123 更新时间:2023-11-29 03:12:26 27 4
gpt4 key购买 nike

正如标题所暗示的,我正在编写一些代码来执行 Java 版本的二分搜索。但是,我的返回语句被忽略,函数反而返回最后一个“捕获所有”返回语句,如下所示:

    public int binarySearch(int min, int max) {

int mid = ((min+max)/2);
double[][] m1 = createFilledSquareMatrix(mid);
double[][] m2 = createFilledSquareMatrix(mid);
double[][] m3 = new double[mid][mid];
long time = analyzeMultiply(m1, m2, m3);
if(time == 1000) {
return mid;
}
if (time > 1000) {

m1 = createFilledSquareMatrix(mid-1);
m2 = createFilledSquareMatrix(mid-1);
m3 = new double[mid-1][mid-1];
time = analyzeMultiply(m1, m2, m3);
if(time <= 1000) {
return mid; //I am reached but ignored
}
else {
binarySearch(min, mid-1);
}
}
else {
System.out.println("here");
m1 = createFilledSquareMatrix(mid+1);
m2 = createFilledSquareMatrix(mid+1);
m3 = new double[mid+1][mid+1];
time = analyzeMultiply(m1, m2, m3);
if(time >= 1000) {
return mid+1; //I am reached but ignored
}
else {
binarySearch(mid+1, max);
}
}

return -2;

}

所以我对被忽略的返回语句进行了注释。我通过调试器进行调试,它执行返回,但随后转到外部 return -2 语句,然后执行该语句。我以前从未遇到过此类问题,所以我觉得我缺少一些简单的东西。任何帮助,将不胜感激。

最佳答案

您的方法是递归的。这意味着每次递归时,都需要对递归调用的返回值做一些事情。您看到的是递归调用到达终止点,返回一个值,然后冒泡退出。然而,由于进行递归调用的实例不会对返回值做任何事情,它会继续执行,就好像什么都没发生一样,导致它退回到它的“捕获所有”返回,等等。

例如,

  else {
binarySearch(min, mid-1);
}

应该是

   else {
return binarySearch(min, mid-1);
}

关于Java binarySearch 返回被忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28595567/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com