![]() |
|
![]() |
問8 再帰呼出しの説明はどれか (平成24年春期 基本情報技術者試験より)
ア あらかじめ決められた順番ではなく、起きた事象に応じた処理を行うこと
イ 関数の中で自分自身を用いた処理を行うこと
ウ 処理が終了した関数をメモリから消去せず、必要になったとき再び用いること
エ 処理に失敗したときに、その処理を呼び出す直前の状態に戻すこと
int factorial( int n ) { if( n == 1 ) return 1; return n*factorial( n - 1 ); }同じ処理を次のように書けますが、上の方が理解しやすいのではないでしょうか?
int factorial( int n ) { int i, p; for( i = n, p = 1; i > 1; i-- ) p *= i; return p; }C言語でも Javaでも再帰呼出しを行うことができます。
下記の描画例を見てください。
どちらの図形も、図の一部にさらに同じ図形が現われています。
平成18年度春期の基本情報技術者試験 午後の問6 C言語問題で出題されたもの
← のような図は、コッホ曲線と呼ばれます。
これを描画するプログラムで再帰呼出しが使われています。
(こちらで問題を見ることができます: 基本情報 C過去問 )
プログラミング講座 cClip のグラフィック機能を使って描いたもの
← のような図は、樹木曲線と呼ばれます。
枝の長さと傾きを変えながら描いています。
枝分かれ回数を指定し、描いては回数を減らしながら再帰呼出しします。
枝分かれ回数が0になったら再帰終了です。
(cClip のグラフィック機能について: グラフィック )