-2

以下のコードが ではなく -1 を返すのはなぜarr.length-1ですか? find()メソッドが 24 を探している場合は5 を返すはずですが、-1 を返すようになりました。n が arr に見つからない場合は、-1 のみを返す必要があります。

public class linearArraySearch {

    public static void main(String[] args) {
        int[] numbers = new int[]{ 12, 42, 56, 7, 99, 24, 6, 1, 5 };
        System.out.println( find(numbers, 24) );
    }

    public static int find( int[] arr, int n ){
        if( arr[arr.length-1] == n ){
            return arr.length-1;
        }else if( arr.length > 1 && arr[arr.length-1] != n ){
            int[] temp = new int[arr.length-1];
            for( int i = 0; i < temp.length; i++ ){
                temp[i] = arr[i];
            }
            find( temp, n );            
        }        
        return -1;
    }   
}
4

4 に答える 4

5

再帰呼び出しによって返された値を無視しています。

あなたは変わるべきです

find( temp, n );

return find( temp, n );
于 2016-04-21T13:26:09.813 に答える
1

おそらく、実際に結果で何かをしたいのですfind( temp, n );が、現在はしていません。したがって、関数は、が最後の要素である場合arr.length - 1にのみ返され、他のすべての場合に返されます。narr-1

于 2016-04-21T13:25:02.483 に答える
0
public class linearArraySearch {

public static void main(String[] args) {
    int[] numbers = new int[]{ 12, 42, 56, 7, 99, 24, 6, 1, 5 };
    System.out.println( find(numbers, 24) );
}

public static int find( int[] arr, int n ){
    if( arr[arr.length-1] == n ){
        return arr.length-1;
    }
    for( int i = 0; i < (arr.length-1); i++ ){
        if(arr[i] == n) {
            return i;
        }
    }
    return -1;
}    
}   
于 2016-04-21T13:48:48.517 に答える