運行到一個愚蠢的錯誤,我只是沒有看到它。我一直在看這一段時間,並沒有看到我錯過了什麼。我遞歸搜索一個數組的特定目標編號,但一旦我到達元素[7]它開始返回-1。謝謝你看看傢伙/女士們!遞歸搜索錯誤
public static void main(String[] args)
{
int[] a = {1,25,2,6,4,3,23,30,32,14,11,8};
Arrays.sort(a);
int target = a[7];
int first = a[0];
int last = a.length;
for(int i=0;i<a.length;i++)
{
System.out.print(" "+a[i]);
}
System.out.println("\n"+binarySearch(target,first,last,a));
}
public static int binarySearch(int target,int first, int last, int[] a)
{
int result;
if(first>last)
return -1;
else
{
int mid = (first+last)/2;
if(target == mid)
result = mid;
else if(target<a[mid])
result = binarySearch(target,first,last-1,a);
else
result = binarySearch(target,mid+1,last,a);
}
return result;
}
具體而言,當你計算的中期,你打算計算中間是中等折射。所以你不能使用像這樣的值:'(first + last)/ 2'。你需要索引。對?想想......你會到達的! – code4kix