0

リストの (n+1) 番目の項目を返す代わりに、メソッドが null を出力するという問題があります。私が見落としているものはありますか?

    public static ListElement getItem(ListElement head, int n){
    if(n == 0){                 
        return head;

    }else if(head == null){

            return null;
    }else{                      

        return  getItem(head.getNext(),n+1);

    }

}
4

3 に答える 3

1

このコードは意味がありません。head が null でない場合は呼び出されますgetItem(head.getNext(), n+1)が、最終的にheadは等しいnull(n決して 0 にはならない) ため、 you が返されますnull。多分あなたは意味した

return getItem(head.getNext(), n-1).

于 2012-07-12T03:00:20.543 に答える
0

n+1 から n-1 に変更します (再帰の基本ケース n == 0 に到達するため):

return  getItem(head.getNext(),n-1);
于 2012-07-12T02:57:29.813 に答える
0

n+1 ではなく、n-1 を実行する必要があります。n は必要な要素の位置に対応し、リストの一番上の項目を削除すると、すべてが上ではなく 1 つ下に移動します。

への変更getItem(head.getNext(),n-1);

于 2012-07-12T02:57:34.603 に答える