本文へスキップ

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


Since 2016.4.19

平成25年度 技術士第二次試験問題【必須科目】

T−20

次のコードは、Javaによるある処理の再帰 (recursive) プログラムである。このプログラムに m = 825、n = 315 を与えた場合に得られる値はどれか。

public int abc(int m, int n) {
 if (m==n) {
  return n;
 } else if (m<n) {
  return abc(m, n-m);
 } else {
  return abc(m-n, n);
 }
}

@ 2  A 5  B 12  C 15  D 18


正解

C


解説

return n を(1)
return abc(m, n-m) を(2)
return abc(m-n, n) を(3)とすると

 abc(825, 315) = abc(825-315, 315) ・・・(3)より
=abc(510, 315) = abc(510-315, 315) ・・・(3)より
=abc(195, 315) = abc(195, 315-195) ・・・(2)より
=abc(195, 120) = abc(195-120, 120) ・・・(3)より
=abc(75, 120) = abc(75, 120-75) ・・・(2)より
=abc(75, 45) = abc(75-45, 45) ・・・(3)より
=abc(30, 45) = abc(30, 45-30) ・・・(2)より
=abc(30, 15) = abc(30-15,15) ・・・(3)より
=abc(15, 15) = 15 ・・・(1)より

T−19 目次