魔法奇源 2017-04-29 14:02 采纳率: 0%
浏览 870

一个关于Java递归的二分算法求助,希望各位大神愿意给予帮助

本人写了一个简单的二分查找算法,从一个数组查找数字,找到了就返回数字在数组中的索引,我测试了算法逻辑没有什么问题,就是控制台输出"找到"后,还会输出“没有找到”,后面我在调用递归函数是加了一个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;
}

  • 写回答

2条回答 默认 最新

  • devmiao 2017-04-29 15:56
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办