2010-12-01 10 views
1

私の宿題は、整数のarraylistをパラメータとして受け取る再帰的静的メソッドを作成することです。 値が0の要素があり、値を5にしたい要素があり、値が1の要素が削除され、値が2の要素が最後に移動するとします。残りはそのままです。再帰、Arraylist

私は再帰を使用せずにそれを行う方法を考えることができますが、どのように再帰を使用してこの問題を解決できますか?

ありがとうございます。

答えて

2

あなたのベースケースは、扱いやすい長さ1のリストです。

最後の1要素が既に処理されていることが分かっている長さ2のリストは、処理するのが少し難しいです。

最後のN-1要素が処理されていることがわかっている長さNのリストは、管理しやすいものでなければなりません。

あなたができることは、リストを取り、最初の要素から次のレベルの再帰までマイナスし、処理されたサブリストを取得したときに最初の要素を処理することです。

@Steven Schlanskerは正しいですが、これは実際には再帰的にやりがいのある仕事ではありません。

3

これは、私に再帰するのに役立つ問題のようなものではありません。それは、そのようにすることが必死ならば、人工的に(再帰的な)ケースを人為的に(正面から要素を切り落とすことによって)構築し、空のリストの「ベース」のケースを使用する方法として、List.subListを使用してください。

+0

最後に並べ替えを適用することを忘れないでください。すべてを開始する前にそれを行うことができますが、最終的に行うことで、要素が少なくなる可能性があるため、少し時間が節約されます。 –

+0

"宿題**は再帰的な静的メソッドを作成する**です"。再帰がここに必要なように私に見える。 –

+0

@Andreas_D:あなたがそれについて不平を言うことができないということを意味しません! –