代码给出-1而不是4.方法应该返回一个值

时间:2018-04-25 09:29:13

标签: java

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作为输出

2 个答案:

答案 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);
    }
}

从递归返回后,您丢失了索引。