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 = 0exで上記のメソッドを呼び出すことができます。inList(primes, 0, a)。これは、非再帰的な検索方法よりもはるかに遅くなります。

于 2012-12-27T20:09:40.480 に答える