Так как название предлагает, я пишу код для выполнения версии бинарного поиска в Java. Тем не менее, мои обратные утверждения игнорируются, и функция вместо возвращает последний «поймать всех» оператор возврата, как показано ниже:Возврат 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 return -2, а затем выполняет это. У меня никогда не было такого типа проблем, поэтому я чувствую, что мне не хватает чего-то простого. Любая помощь будет оценена по достоинству.