Subsections
これまでの例で,再帰呼び出しは繰り返し文と似ていることが分かっただろう.繰り返し
文では,無限ループにならないように,必ず終了条件が必要であった.同じように,再帰
呼び出しでも,呼び出しの終了条件が絶対に必要である.そうしないと,無限に関数を呼
び出すことになり,いずれはプログラムがクラッシュするであろう.
もうひとつ重要なことは,再帰呼び出しが出きるようなアルゴリズムを考えなくてはなら
ない.一つの考え方は,漸化式を書いてみることである.数学の漸化式のような考え方が
出きれば,それを忠実にプログラムすれば,再帰呼び出しができるであろう.
結論から先に言うと,再帰呼び出しは出来るだけ使わない方が良い.繰り返し文で可能な
らば,再帰呼び出しをわざわざ使う必要はない.なぜならば,再帰呼び出しは関数を
何回もコールするため,速度は遅くなり,さらにメモリーも多く使う.しかし,プログラ
ムの記述が簡素になる場合は,再帰呼び出しを使うべきである.ハノイの塔やクイックソー
トを再帰呼び出しを使わないで,プログラムを書くとなると,かなり手間がかかるだろう.
とても難しく思えたハノイの塔を解くプログラムが,びっくりするほど簡単に書けるのは
再帰呼び出しの威力である.
ホームページ:
Yamamoto's laboratory著者:
山本昌志
Yamamoto Masashi
2006-03-23