関数内で、自身の関数を呼ぶ処理のこと。再帰的関数を使う事で、ある種のアルゴリズム表記を端的に
表現可能な場合もあるが、多くの場合、デバックや可読性に難が生じる場合がある。
一般に、再帰的表現はループ展開による表現が可能である。


'再帰
Function sum41(a As long, b As long) as long
if a>b then exit function
sum41=a+sum41(a+1,b)
End Function

#N88BASIC
Print sum41(sum41(1,sum41(-1,3)),sum41(sum41(1,sum41(1,2)),9))


再帰的処理では、自身の関数を呼ぶので、結果として無限ループとなる。したがって、通常はif文などを
用いて停止条件などを指定する必要がある。

しかし実際には再帰的関数は、幾つかの手続き型言語では、再帰関数は無限ループとはならない。
原因は、関数を実行する際の引数保存スタックで、引数等をスタックと呼ばれる変数に一時的に退避する仕組みを持つ為。
スタックは無限ではないので、再帰途中で停止する。

再帰的関数の代表的な例は、LispやSchemeなどのプログラミング言語で、殆どの処理においてループに該当する
処理は再帰的関数として書かれ、ループ構文が無い言語も存在する。

近年になり、幾つかのプログラミング言語ではLisp的な機能を取り入れる等、見直されている。


ループはなんでも再帰するのが上級者。

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2010年07月24日 01:30