я работаю с многомерными массивами. я написал метод, который использует бинарный поиск, чтобы увидеть, есть ли какой-то int в одном под-массивахя отладил бинарный поиск, он работает нормально. я отладил метод, который вызывает двоичный поиск. я видел, что это вошло в устав. вернул истину. но он снова входит в рекурсивный вызов.
мой код:
int[][] mainArr = {
{1,1,1,1},
{1,2,3,4},
{4,5,6,6},
{6,7,8,9}
};
System.out.println(exerciseSix(mainArr, 5, 0));
}
public static boolean exerciseSix(int[][] arr, int x, int position){
int binAns = -1;
if(position == arr.length){
return false;
}
if(x == arr[position][arr[position].length - 1]){
return true;
}
if(x < arr[position][arr[position].length - 1]){
binAns = binarySearch(arr[position], 0, arr[position].length, x);
}
if(x == binAns){
return true;
}
if(x > arr[position][arr[position].length - 1]){
exerciseSix(arr, x, ++position);
}
return false;
}
static int binarySearch(int[] arr, int l, int r, int x){//l is the left most index
if(r < l)
return -1;
int m = l+(r-l)/2;
if(arr[m] == x)
return arr[m];
if(arr[m] < x)
return binarySearch(arr, m+1, r, x);
return binarySearch(arr, l, m-1, x);
}