本人写了一个简单的二分查找算法,从一个数组查找数字,找到了就返回数字在数组中的索引,我测试了算法逻辑没有什么问题,就是控制台输出"找到"后,还会输出“没有找到”,后面我在调用递归函数是加了一个return就好了,一直不明白,希望各位
大神能帮我解答下,我列出了修改之前的代码后后来的代码
原来的代码如下:
private static int innerDichotomySearch(Integer[] arr, int l, int r, Integer key) {
if(arr != null && arr.length > 0) {
int middle = (l + r) >>> 1;
if(l <= r) {
if(arr[middle].compareTo(key) == 0) {
System.out.println("找到");
return middle;
}else if(arr[middle].compareTo(key) < 0) {
l = middle + 1;
}else{
r = middle -1;
}
innerDichotomySearch(arr, l, r, key);
}
}
System.out.println("没有找到");
return -1;
}
修改后的代码如下
private static int innerDichotomySearch(Integer[] arr, int l, int r, Integer key) {
if(arr != null && arr.length > 0) {
int middle = (l + r) >>> 1;
if(l <= r) {
if(arr[middle].compareTo(key) == 0) {
System.out.println("找到");
return middle;
}else if(arr[middle].compareTo(key) < 0) {
l = middle + 1;
}else{
r = middle -1;
}
return innerDichotomySearch(arr, l, r, key);
}
}
System.out.println("没有找到");
return -1;
}
一个关于Java递归的二分算法求助,希望各位大神愿意给予帮助
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-