関数とプログラムの構造について
再帰
どのようなことあと書くと「関数内から自身の関数を呼び出すことが出来る」という不思議な説明になってしまいます。実際に使うのは、それなりのプログラミングをするときにならないと使うことが出来ると思います。
例えば、どこかのフォルダの指定されたファイルを探索するというプログラムを作成するとしましょう。すると、フォルダの階層はフォルダ内の構成によって変わりますし、何度繰り返して下層のフォルダに行けば良いかわかりません。
その場合に「今いるフォルダにあるフォルダ内を探索する」という関数を作ります。一度呼び出しただけでは今いるフォルダから1つ下層のフォルダを探索するだけです。そこで、先ほど作った関数から自分自身の関数を呼び出してやるとどうでしょう?呼ばれるたびに下層のフォルダを探索していき、目的のファイルを探し続けます。このように同じ処理を繰り返すことにより機能を実現させる方法を再帰と呼びます。
自身の関数が複数稼働することになるためグローバル変数などの使用はできません。また、なんらかの終了条件や中断する条件を設けていないと、無限に関数をコールすることになり、半永久的に動作が終わらなくなってしまうので注意しましょう。
フォルダ構成のようにツリー構造のデータを扱う場合に多く用いられますが、その他にも階乗計算などにも利用されることがあります。呼び出された関数の数だけメモリを消費しますので、コンピュータの処理能力も考慮したプログラミングが必要となってきます。