gpt4 book ai didi

java - Java 中的二分查找结果错误

转载 作者:行者123 更新时间:2023-12-01 22:18:14 24 4
gpt4 key购买 nike

我是编程新手,编写了这段代码用于递归二分搜索,但输出是错误的。
我尝试调试了很多次,但不知道哪里出了问题。

public class Number {
public static void main (String[] args){
int []a = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19};
int key = 7;
int mid,low,high;
low=0;
high=a.length-1;
int pos=binarySearch(a,key,low,high);
System.out.println(key +" is found at "+pos+" position");
}

public static int binarySearch(int[]a,int key,int low, int high) {

int mid=(low+high)/2;

if(key<a[mid]){
high=mid-1;
binarySearch(a,key,low,high);
}
else if(key >a[mid]){
low=mid+1;
binarySearch(a,key,low,high);
}
else if(low>high){
return -1;
}
return mid;
}
}

最佳答案

在递归调用期间,调用者的执行被中断,并且他的执行帧被插入堆栈。当被调用者完成执行时,将从堆栈中检索调用者帧并继续执行。您将 9 分配给了 mid,然后返回了 mid 而没有重新分配它。如果您尝试不同大小的数组,您将看到始终返回初始 mid 并且无缘无故地进行所有递归调用。要调试,请放置一个 System.out.println("returning "+mid);在 return 语句前面。

关于java - Java 中的二分查找结果错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30552846/

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