我在代码中偶然发现了一些问题,据说返回会停止我的方法,但就我而言并非如此。我尝试创建一种名为“binarySearch”的方法,据说它可以完成其应做的事情。
public int binarySearch(int lowIndex, int highIndex, int[] arr, int val) {
int middleIndex = (lowIndex + highIndex ) / 2;
if(arr[middleIndex] < val) {
lowIndex = middleIndex;
} else if (arr[middleIndex] > val) {
highIndex = middleIndex;
} else {
return middleIndex;
}
binarySearch(lowIndex, highIndex, arr, val);
return 0;
}
问题是如果我已经找到了搜索值所在的索引,否则语句将返回它并已经停止。但相反,我总是得到“0”,我认为这是我为默认返回设置的值 return 0
。因此,为了澄清一些问题,我在 else 语句上添加了一些文本,以确保它执行并返回 middleIndex
,然后文本出现,所以基本上我的循环进入 else 语句并希望返回 middleIndex
但事实并非如此。也许递归与此有关,但我不知道你们是否可以帮助我。
最佳答案
由于您的方法的签名为 public int binarySearch
,这意味着您应该从 binarySearch
方法的递归调用中返回 int。在该方法的正确实现中,您实际上不应该return 0
。
关于java - if、else if、else 语句中的 return 语句不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51277278/