我的代码有什么问题?有人能帮我吗

what is wrong in my code? Can someone help me

   public class BinarySearch {

    public static void main(String[] args) {
        int[] arr = {10,20,30,40,50,60,70,80};
        int index = search(arr,80,0,arr.length-1);
        if(index == -1) {
            System.out.println("element not found");
        }
        else {
            System.out.println("element is present at index:"+index);
        }
    }

    public static int search(int[] arr,int x,int start, int end) {

        if(start>end) {
            return -1;
        }
        int mid = (int)(Math.floor(start+end)/2);

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

        else if(arr[mid]>x) {
            search(arr,x,start, (mid-1));
        }

        else {
            search(arr,x, (mid+1),arr.length-1);
        }

        return -1;
    }
 }

正如我们所看到的,我正在搜索 80 并且我的代码正在命中语句 return mid;但程序仍然是 returning -1。 有人可以告诉我这里做错了什么吗?

如前所述,您缺少 return 语句,并且通过忽略所有 returned 值,您还需要使用 end 而不是 else 中的数组长度声明这样做:

else if(arr[mid] > x) 
{
     return search(arr, x, start, (mid - 1));
} else {
     return  search(arr, x, (mid + 1), end);
}

还有一个更好的计算中间值的方法是:

int mid = start + (end - start) / 2;

为了避免整数溢出。