本文へスキップ

技術士試験(情報工学部門)・情報技術者試験。ファーストマクロ。


Since 2016.4.19

平成21年度 技術士第一次試験問題【専門科目】

W−3

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