0

再帰問題を勉強していたのですが、こんな感じです

import java.util.Arrays;


public class BinarySearch {
public static int binarySearch(int [] list, int key){
    int low = 0;
    int high = list.length -1;
    return binarySearch(list, key, low ,high);
}
public static int binarySearch(int [] list, int key, int low, int high){
    if(low > high){
        return (-low -1);}
    int mid = (low + high) / 2;
    if(key < list[mid])
        return binarySearch(list, key, low, mid - 1);
    else if(key == list[mid])
        return mid;
    else
        return binarySearch(list, key, mid + 1, high);
}
public static void main (String [] args){
    int [] list = {'1', '2','4','5'};
    binarySearch(list, 4);
    System.out.println(Arrays.toString(list));

}

}

出力:[49、50、52、53]

それを正しくするために私は何をすべきですか?

4

3 に答える 3

4

文字を整数配列に格納しています:-

int [] list = {'1', '2','4','5'};

したがって、取得した値は1, 2, 4, 5それぞれのASCIIコードです。このため、binarySearchメソッドは値を見つけることができません4。として、それは正確にはありません。値を囲む一重引用符を削除します。

次に、return valueofbinarySearchメソッドを出力していません:-

binarySearch(list, 4);

する必要があります:-

System.out.println(binarySearch(list, 4));
于 2012-12-07T14:20:10.463 に答える
1

リストに文字値を追加しました。

このように一重引用符を切り替えると、問題ないはずです

{1,2,4,5};

したがって、特定のケースでは、文字「1」、「2」、「3」、および「4」のASCII値を格納しています。

于 2012-12-07T14:22:31.947 に答える
0

Rohitが指摘しているように、あなたはcharタイプが数字タイプであることを利用しています。

「リスト」をとして宣言してchar[]修正するか、数値リテラルを使用することができます。

于 2012-12-07T14:22:42.590 に答える