在整数数组中查找整数元素:递归问题

时间:2012-12-27 19:50:53

标签: java recursion

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

这是代码

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?";
}

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分: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);
}

答案 2 :(得分: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)。这将比非递归查找方法慢得多。