2005年度の授業は終りました。 この授業のページは参照用の資料として保存しているものです。最新の情報・資料は 江上の授業ページで。 |
再帰(Recursion) |
関数それ自身が、自分を呼び出す場合。関数の定義の中に関数自身を使用するようなもの。
「再帰を利用することにより、関数は簡潔に定義される」例がある。
再帰を使う上での、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 ) ) ;
}
と言って良い
/*
学籍番号 氏名 日付 例題6-6: 階乗を求めるプログラム */ #include <stdio.h> double kaijo(int n); int main(void)
double kaijo(int n)
|
*) でも正直に言うと、階乗程度のプログラムに再帰は必要無い。再帰無しでも十分効率的なプログラミングが可能である。
#include <stdio.h>
double kaijo(int n); int main(void)
double kaijo(int n)
for (i = 1; i <= n;
i++) {
|