貪欲法や動的計画法などの高度なアルゴリズムの概念を理解するには、まず再帰に精通している必要があります。
私は再帰に比較的慣れていません。質問がなされるたびに、最初に頭に浮かぶのは、反復を使用したソリューションです。再帰的な方法が何を意味し、どのように機能するかは知っていても、再帰的に考えるのは非常に困難です。
以下の質問に答えてください。
1) 反復法を再帰に置き換えることはできますか、またその逆は可能ですか?
たとえば、サイズ n の配列の要素を再帰的に出力する方法は?
for i 0 to n
Print a[i]
2) 問題を再帰的に解決する方法は? 手順は何ですか?問題を再帰的に解決できることを特定するためのヒントはありますか?
例: 文字列のすべての部分文字列を出力するように求められた場合
INPUT: CAT
OUTPUT: CAT,CA,A,AT,T
反復的な方法をすばやく思いつくことができます。2 つのループを使用すると、問題を解決できます。
しかし、再帰的にそれを解決する方法。問題が再帰的に解決できることを特定する方法。
最初の質問に対する答えが「はい」の場合、反復の代わりに 2 つの再帰を使用することで問題を解決できますか?
3)再帰の概念を完全に理解するための資料/リソースを誰かに提案してもらえますか?