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



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

下面是代码

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

您忘记添加return
你对数组排序了吗?

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

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

在数组中查找的递归函数是:

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)调用上述方法。这将比非递归查找方法慢得多。

最新更新