1

これが有効な質問であるかどうかはわかりませんが、ここで説明します。さまざまなリスト(linkedList、キュー、スタックなど)と再帰アルゴリズムに関しては、この疑問がありました。いつ使うべきなのか、なぜ使うべきなのかよくわかりません。それらを実装する方法は知っていますが、なぜ通常の配列の代わりにリストを使用する必要があるのか​​、またはforの代わりに再帰を実行する必要があるのか​​はよくわかりません。私は1年半で卒業しようとしています。これを知らずに仕事を探しに行きたくありません。

よろしくお願いします。使用すべき問題の例を教えていただければ幸いです。

4

3 に答える 3

0

再帰と反復を比較するこの記事を見てください:http: //www.codeproject.com/Articles/21194/Iterative-vs-Recursive-ApproachesJava配列またはリストを通過します。どちらが速いですか?リストと配列をよりよく理解するため。

于 2012-10-02T03:14:42.310 に答える
0

これは、さまざまなJavaコレクションについて説明しているページです。基本的に、それはあなたのコンテンツとあなたがそれらをどのように使いたいかによります。たとえば、重複のない値のコレクションが必要な場合は、セットを使用します。重複が問題にならない場合は、リストを使用します。これは、パフォーマンスが速く、私の意見ではコーディングが簡単だからです。キューのように、入力した順序でデータを保存するものもあります。

コレクションの説明

于 2012-10-02T03:15:49.230 に答える
0

再帰と反復は、「何ができるか」という点では同等です。反復の代わりに再帰を使用する理由は、特定のアルゴリズムの記述方法を単純化するためです。たとえば、バイナリツリーを再帰的にトラバースすると、反復的に実行しようとするよりも明確なコードが生成されます。クイックソートを再帰的に作成する方が、繰り返し作成するよりも簡単でクリーンです。再帰は、単にプログラムスタックを利用して状態を格納する行為です。スタックを自分で格納することにより、再帰アルゴリズムを反復アルゴリズムに変換できます。しばらくの間、Racketのような言語で作業することをお勧めします。これは私の言葉よりもはるかにうまく頭に浮かぶでしょう。

通常、頻繁に削除する必要がある配列の代わりにリストを使用し、特定の要素に頻繁にアクセスする必要はありません。配列からの削除はO(n)、削除された要素の後のすべてを1つのインデックス左にシフトする必要があるための操作です。キューは必ずしもリスト構造ではなく、配列を使用して表すことができます。キューとスタックは、幅優先および深さ優先グラフ検索などの多くのアルゴリズムで役立ちます。このためのデータ構造とアルゴリズムの本を入手することをお勧めします。特定のデータ構造が有用である理由をアルゴリズムに説明させることは非常に貴重です。

于 2012-10-02T03:23:10.727 に答える