再帰(再帰的に定義された)データ構造は、それ自身を部分的に複製する構造です。私たちは、上の会社構造の例でちょうどそれを見ました。持つオブジェクトのどちらかです。HTMLやXMLドキュメントです。(これにはテキスト部分/コメントや他のタグなどが含まれています)これは繰り返しになりますが、再帰的な定義です。呼ばれる再帰構造を学びましょう。list)想像してください、我々が順序付けされたオブジェクトのリストを保存したいとします。obj3];...しかし、配列を使う場合には問題があります。操作はコストが高いです。ための場所を作るために、全ての要素の番号を振り直す必要があります。配列が大きい場合、それは時間がかかります。arr.push/pop。従って、配列は大きなキューに対しては非常に遅くなる可能性があります。呼ばれる別のデータ構造を選択することもできます。持っていることがはっきり見えます。ポインタの後にはどの要素にも到達することができます。secondList;そして、もちろんどんな場所にもアイテムを挿入したり取り除いたりすることができます。新しい値を先頭に追加するには、リストの先頭を更新します。今やチェーンからは除外されています。それがどこにも保持されていない場合、自動的にメモリから削除されます。配列とは違って、大量の番号の再割り当てはなく、要素を簡単に組み替えることができます。当然ながら、リストは常に配列よりも優れているとは限りません。なければ皆リストだけを使うでしょう。主な欠点は、番号では簡単に要素にアクセスできないことです。...でも、常にこのような操作が必要とは限りません。これらは両端から要素を非常に高速に追加/削除できる順序付けられた構造です。いう名前の別の変数を追加する価値があります(そして要素を最後に追加または削除するときにそれを更新します)。要素の集合が大きいと、配列と速度の違いが大きくなります。関数を意味するプログラミングの用語です。このような関数を使用して、特定のタスクを簡潔で美しい方法で解決することができます。関数がそれ以上の呼び出しを行わないようにタスクを単純化する関数の引数です。データ構造は自身を使って定義できるデータ構造です。null)を参照するオブジェクトで構成されているデータ構造として定義できます。それらは分岐し、各分岐は別の分岐をもつことができます。例で見たように、再帰関数を使ってそれらを見て回ることができます。どんな再帰関数も反復的なものに書き直すことができます。時には最適化を行う必要があります。多くのタスクでは、再帰的な解決策は十分速く、書きやすく、保守が簡単です。ループを使ってください。再帰を使ってください。