再帰 -誰もが知っているように-これらの問題の1つです-あなたの頭を包むことは、プログラミングの旅で「マイルストーン」を達成するような気がします。
しかし、実際の問題で実際に使用する場合は、再帰のメカニズムを知るだけでは十分ではありません。再帰が最も適切な解決策である問題の性質も理解する必要があります。
私の質問はこれです...
- 再帰の解決を要求する「問題パターン」とは何ですか
- 再帰は「分割統治」戦略の形式、または「コード再利用」の形式です-または、それ自体が設計パターンです
- 再帰が即座の解決策として頭に浮かぶ現実世界の問題の例を教えてください
-更新-
多くの答えは、「本当の問題」をツリー探索や階乗などと呼んでいます。「本当の本当の問題」を好むでしょう。例を挙げましょう...
テキストの大規模なチャック(のリンクリストとして約30 MBのテキストstructs
)があり、全文検索のためにそのインデックスを作成する必要がありました。インデックス全体をメモリに保持し、10分ごとにテキストのインデックスを再作成する必要がありました。
10分ごとに、テキスト全体(2つのリンクリスト、1行ずつ)と新しく生成されたテキストチャンクを比較し、変更された行を確認し、その行のみを再インデックスしますテキスト全体のインデックスを再作成する必要がなくなりました。覚えておいてください-2つの30 MBのリンクリスト間の差分ポイントを見つける必要がありました。
私の同僚の一人は、HEAVY再帰を使用して行を比較する素晴らしいプログラムを思い付きました-そして、チャックが配列内で異なる位置を収集します-はいやった
要点は、再帰を頻繁に使用することで、この問題をスマートに解決できることをどのように確認できるのでしょうか?