C言語で、次のように関数 f を定義し、呼び出した。このとき変数 x に代入される値を@〜Dの中から選べ。
関数の定義:
int f( int n, int a, int b ) {
if (n == 1) { return a; }
else { return f( n - 1, b, a + b ); }
}
関数の呼び出し:
int x = f( 6, 1, 1 );
@ 5 A 6 B 7 C 8 D 13
C
f( 6, 1, 1 ) = f( 6 - 1, 1, 1 + 1 )
= f( 5, 1, 2 ) = f( 5 - 1, 2, 1 + 2 )
= f( 4, 2, 3 ) = f( 4 - 1, 3, 2 + 3 )
= f( 3, 3, 5 ) = f( 3 - 1, 5, 3 + 5 )
= f( 2, 5, 8 ) = f( 2 - 1, 8, 5 + 8 )
= f( 1, 8, 13 )
n = 1 となったので、a を返す。
従って、f ( 1, 8, 13 ) = 8
W−2 | 目次 | W−4 |