package com.ibm.prac;
public class main {
public static void main(String[] args) {
int[] arr = {1,2,5,7,9,10};
int no = 9;
int index = returnIndex(arr,no, 0, arr.length-1, arr.length/2);
System.out.println(index);
}
private static int returnIndex(int[] arr, int no, int start, int end, int mid) {
int index = -1;
if(no == arr[mid]){
index = mid;
return index;
}
else if(no > arr[mid]){
if(index == -1){
start = mid;
mid = (start + end)/2;
returnIndex(arr, no, start, end, mid);
}
}
else{
System.out.println("write");
}
return index;
}
}
为什么这段代码返回-1。它应该返回4。 它将值取为4然后再转到else语句并将-1作为输出
答案 0 :(得分:0)
使用eclipse或IntelliJ的调试器。但是条件不完整,递归正在跳过一些边缘情况。
答案 1 :(得分:0)
修复
else if(no > arr[mid]){
if(index == -1){
start = mid;
mid = (start + end)/2;
index = returnIndex(arr, no, start, end, mid);
}
}
从递归返回后,您丢失了索引。