次のコードは、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 | 目次 |