平成20年度 技術士第一次試験問題【専門科目】
【16】情報工学部門
W−1
次のC言語のプログラムを実行したときに出力される結果を、@〜Dの中から
選べ。

 int p (int x, int y) {
  if (x > y) return p(x-y, y);
  if (x < y) return p(y-x+1, x);
  retern x;
 }

 int main ( ) {
  printf("%d\n", p(5, 6));
 }

@ 2  A 3  B 4  C 5  D 6



【正解】 @

if (x > y) return p(x-y, y);    ・・・(1)
if (x < y) return p(y-x+1, x);  ・・・(2)

とすると、

p(
5, 6)
= p(
6-5+1, 5)
= p(
2, 5)      ・・・(2) より
= p(
5-2+1, 2)
= p(
4, 2)      ・・・(2) より
= p(
4-2, 2)
= p(2,
2)      ・・・(1) より
=
  ・・・ (1),(2)の条件に合わないため return x で終了。


EXCELのマクロのご相談なら ファーストマクロ 



目次 W−2
ファーストマクロ TOPページ