数学的帰納法と再起呼び出し 数学的帰納法 「P(1)」と、「P(k-1) → P(k)」を利用して、「P(N)」を示す 再起呼び出し P(N) { if ( N==1 ) { P(1) } else { P(k-1)を利用 } } 帰納法の流れをそのまま、プログラムに表現する手段 事例 : 帰納法の証明を利用して、再起のプログラムを作る 問題 : サイズ N のピラミッド作りたい ( P(N) ) 数学的帰納法による証明 サイズ 0 は、何もしなくてよい サイズ K のピラミッド作りたい(P(K))なら、P(K-1) の後 K を描けば良い 再起呼び出しによる実装 ( triangle ( char *N ) ) void triangle ( char *N ) { if ( !strcmp ( N, "" ) ) { /* サイズ 0 の時 */ /* 何もしない */ } else { /* サイズが一般の N の時 */ triangle ( N + 1 ); /* 文字列は 1 を加えると短かくなる */ /* 再起呼び出し */ printf ( N ); /* N を表示 */ printf ( "\n" ); /* 改行 */ } }