【发布时间】:2015-05-01 17:24:29
【问题描述】:
我只是在用一个 int 数组练习我的二进制搜索,并不能完全弄清楚为什么我的逻辑不正确。我已经追踪了我的代码,这一切都在我身上。然而,代码编译得很好;我缺少一些逻辑。我可以有一组额外的眼睛追踪我的小部分吗?
我认为我不需要返回 0;但是如果没有其他外部的返回,我就无法编译我的代码。
public static void main (String[] args)
{
int[] data = new int[]{5,10,15,20,25,30,35,40,45,50,55,60};
int first = 0;
int last = data.length;
int target = 55;
System.out.print(BinarySearch(data,first,last,target));
}
public static int BinarySearch(int[] data, int first, int last,int target)
{
if(first > last)
return -1;
else{
int middle = (first+last)/2;
if(target == data[middle])
return data[middle];
else if(target < data[middle])
BinarySearch(data,first,middle-1,target);
else
BinarySearch(data,middle+1,last,target);
}
return 0;
}
【问题讨论】: