2011-10-24 9 views
5

再帰を必要とするいくつかの問題は、常に私を修正の対象にしています。私はいつも再帰的なアルゴリズムを思いつくことができませんが、私は問題への再帰的な解決があることを知っています。広範な再帰チュートリアル

私は、再帰的アプローチを使用して実装が簡単な階乗やフィボナッチのような問題を発見します。しかし、番号http://en.wikipedia.org/wiki/Partition_%28number_theory%29のパーティションを生成するなど、より複雑な問題に直面すると、再帰的なアプローチがあることはわかっていますが、すぐそこに固執します。私は再帰アルゴリズムを考案することはできません。私が文字列のすべての組み合わせを出力したいとしたり、再帰を使ってCoin Changeの問題を解決したいとしたら、私は再帰的アプローチを考え出すことはできません。

再帰的アプローチを思いつくための特別な方法はありますか?より高度な問題を解決するのに役立つ広範な再帰アルゴリズムのチュートリアルはありますか?

答えて

3

は非常にスタックオーバーフローにここで推奨して自由に利用できるオンラインですStructure and Interpretation of Computer Programs book、目を通してみてください。 Schemeプログラミング言語を使用して、プログラミングに関する基本的な概念を教えます。 Schemeは関数型プログラミング言語であるため、CやPHPなどの命令型プログラミング言語でもどこでも使用できますが、通常はループ構造を使用する場所でも再帰が広く使用されています。 本書の例と問題は、あなたが望むなら自然の生息地での再帰を示し、複雑な構成のシナリオではありません。

+0

ありがとうございます。私は間違いなくこの本を読むでしょう:-) – PuppyHeadedNinja

+0

実際には、MITのウェブサイトでオンラインの完全ビデオレッスンシリーズもあります:http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6 -001 - コンピュータプログラムの構造と解釈 - Spring 2005/video-lectures /彼らはかなり興味深いです:) – sergico