平成25年度 技術士第二次試験問題【必須科目】
【16】情報工学部門
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)より

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



T−19 目次 平成26年度 二次試験
ファーストマクロ TOPページ