回答編集履歴

3

微修正

2020/07/23 12:35

投稿

episteme
episteme

スコア16612

test CHANGED
@@ -78,6 +78,10 @@
78
78
 
79
79
  public static int gcd(int x, int y) {
80
80
 
81
+ // y == 0 のとき: gcd(x,y) = x
82
+
83
+ // そうでないとき: y と、xをyで割った余りrの最大公約数gcd(y,r)に等しい
84
+
81
85
  return y == 0 ? x : gcd(y, x%y);
82
86
 
83
87
  }

2

追記

2020/07/23 12:35

投稿

episteme
episteme

スコア16612

test CHANGED
@@ -65,3 +65,35 @@
65
65
  "再帰を用いて"とあるから「再帰によってループと同じ効果を得る」ってこと。
66
66
 
67
67
  だから関数gcd(x,y)にはループが現れない。
68
+
69
+
70
+
71
+ [追記] 上記コードをきっちきちに詰めて書くと:
72
+
73
+ ```Java
74
+
75
+ public class Trial {
76
+
77
+
78
+
79
+ public static int gcd(int x, int y) {
80
+
81
+ return y == 0 ? x : gcd(y, x%y);
82
+
83
+ }
84
+
85
+
86
+
87
+ public static void main(String[] args) {
88
+
89
+ System.out.printf("gcd(28,42) = %d\n", gcd(28,42));
90
+
91
+ System.out.printf("gcd(42,28) = %d\n", gcd(42,28));
92
+
93
+
94
+
95
+ }
96
+
97
+ }
98
+
99
+ ```

1

追記

2020/07/23 12:17

投稿

episteme
episteme

スコア16612

test CHANGED
@@ -59,3 +59,9 @@
59
59
  }
60
60
 
61
61
  ```
62
+
63
+ ※ 「次の処理を**繰り返す**」とあるからループを描いたんだろうけど、
64
+
65
+ "再帰を用いて"とあるから「再帰によってループと同じ効果を得る」ってこと。
66
+
67
+ だから関数gcd(x,y)にはループが現れない。