0

我编写了这个递归方法来查找整数数组中的整数,但它不起作用。我尝试调试它,但我不知道问题可能是什么。

这是代码

public static String inList(int[] primes,int a){
    int index = -9;
    if(primes.length>1){
        index = primes.length/2;
    }else{
        if(primes[0] == a){
            return "True";
        }else{
            return "False";
        }
    }
    if(primes[index] == a){
        return "True";
    }
    if(primes[index] > a){
        inList(Arrays.copyOfRange(primes, 0, index),a);
    }
    if(primes[index]<a){
        inList(Arrays.copyOfRange(primes, index, primes.length),a);
    }
            //shouldn't even get to this point, but eclipse insisted I needed another return
            //statement
    return "Whyyyyy?";
}
4

3 回答 3

2

只需使用Arrays.binarySearch(). 正如您从它的不同原型中看到的那样,当且仅当您在数组中查找的值不存在时,它才会返回负值。

于 2012-12-27T19:56:32.640 回答
2

您忘记添加返回
您是否对数组进行了排序?

if(primes[index] > a){
    return inList(Arrays.copyOfRange(primes, 0, index),a);
}
if(primes[index]<a){
   return inList(Arrays.copyOfRange(primes, index, primes.length),a);
}
于 2012-12-27T20:16:40.077 回答
1

在数组中查找某些东西的递归函数将是:

public static String inList(int[] primes,int index, int a) {
    /* two breaking conditions for recursion: end of array or number found */
    if(index >= primes.length)
        return "False";

    if(primes[index] == a)
        return "True";

    /* recursion */
    return inList(primes, ++index, a);
}

index = 0您可以使用ex调用上述方法。inList(primes, 0, a). 这将比非递归查找方法慢得多。

于 2012-12-27T20:09:40.480 回答