再帰とは?
関数それ自身が、自分を呼び出す場合。

関数の定義の中に関数自身を使用するようなもの。

「再帰を利用することにより、関数は簡潔に定義される」例がある。

 
再帰呼び出しのルール
再帰を使う上での、2つのルールを考慮するように!
  • 無限の呼び出しは駄目。呼び出しの終わりを持つこと。
  • 無理に使用しない。プログラムが簡単になる場合のみ使用する。
  •  
    例) 階乗を求める
    5 ! = 5 * 4 * 3 * 2 * 1 = 120
    漸化式というものを習った・・・でしょ?(そうでなくても…前回、宿題にしておきました)
    kaijo( 0 ) = 1
    kaijo( n ) = n * kaijo( n - 1 )
    これをC言語のコードに書き換えると
    int kaijo ( int n )
    {
        if (n == 0)
            return ( 1) ;
        else
            return ( n * factor ( n - 1 ) ) ;
    }
    「漸化式の形式に書き表せるもの」 = 「再帰プログラミングに適している」
    と言って良い
     
    サンプルプログラム
    *) でも正直に言うと、階乗程度のプログラムに再帰は必要無い。再帰無しでも十分効率的なプログラミングが可能である。

     
     

    Kunihiro Egami <egami@egamix.com>