二进制搜索程序返回错误的位置

沙哈哈:

我写了一个用于二进制搜索的递归程序,如您所见,我试图在给定数组中查找目标= 21的位置,这将使我返回位置2。但是我的输出是1。在调试时,它与att arr [开始] =目标,但直接跳到了findTheNumber(arr,mid + 1,end,target)行;然后下一行,然后返回中点。.想知道为什么我的返回在“返回起点”处中断

 package Recursion;

 public class BinarySearch {
 static int  mid = 0;

 public static int findTheNumber(int[] arr, int start, int end, int target) {


    if (arr[start] == target) {
        return start;
    }

    mid = (start + end) / 2;

    if (arr[mid] == target) {
        return mid;
    } 

    if (target >arr[mid]) {
            findTheNumber(arr, mid + 1, end, target);
        } else if (target <arr[mid]) {
            findTheNumber(arr, start, mid-1, target);
        }
        return mid;
    }



public static void main(String[] args) {
    int[] arr = { 10, 12,21 };
    int start = 0;
    int end = arr.length - 1;

    int target = 21;

    System.out.println(findTheNumber(arr, start, end, target));

}

}

WolverinDEV:
if (target >arr[mid]) {
    findTheNumber(arr, mid + 1, end, target);
} else if (target <arr[mid]) {
    findTheNumber(arr, start, mid-1, target);
}

您只是将您的mid观点返回那里,而不是递归调用的实际结果。
您的代码应如下所示:

if (target >arr[mid]) {
    return findTheNumber(arr, mid + 1, end, target);
} else if (target <arr[mid]) {
    return findTheNumber(arr, start, mid-1, target);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章