回答編集履歴
2
訂正
answer
CHANGED
@@ -1,5 +1,14 @@
|
|
1
1
|
`num / 10`と`num % 10`とを足し合わせればよいです。
|
2
2
|
|
3
|
+
**訂正:**
|
4
|
+
これだと例えば28が入力されたとき上手くいきませんね。
|
5
|
+
下記の一般的な方法を使ってもよいですが、二桁ならば直接書いてもよいでしょう。
|
6
|
+
```Java
|
7
|
+
for(int i = 0; i < 2; i++) {
|
8
|
+
num = (num / 10) + (num % 10);
|
9
|
+
}
|
10
|
+
```
|
11
|
+
|
3
12
|
追記
|
4
13
|
---
|
5
14
|
あんまり回答が短いのもあれなので、一般的な方法を置いときます。
|
1
追記
answer
CHANGED
@@ -1,1 +1,34 @@
|
|
1
|
-
`num / 10`と`num % 10`とを足し合わせればよいです。
|
1
|
+
`num / 10`と`num % 10`とを足し合わせればよいです。
|
2
|
+
|
3
|
+
追記
|
4
|
+
---
|
5
|
+
あんまり回答が短いのもあれなので、一般的な方法を置いときます。
|
6
|
+
|
7
|
+
**ループを使う方法**
|
8
|
+
```Java
|
9
|
+
private static int reduceSum(int arg) {
|
10
|
+
while(arg / 10 != 0) {
|
11
|
+
int total = 0;
|
12
|
+
for(; arg != 0; arg /= 10) {
|
13
|
+
total += arg % 10;
|
14
|
+
}
|
15
|
+
arg = total;
|
16
|
+
}
|
17
|
+
return arg;
|
18
|
+
}
|
19
|
+
```
|
20
|
+
|
21
|
+
**再帰を使う方法**
|
22
|
+
```Java
|
23
|
+
private static int reduceSumRecursive(int arg) {
|
24
|
+
if(arg / 10 == 0) return arg;
|
25
|
+
|
26
|
+
int total = 0;
|
27
|
+
for(; arg != 0; arg /= 10) {
|
28
|
+
total += arg % 10;
|
29
|
+
}
|
30
|
+
return reduceSumRecursive(total);
|
31
|
+
}
|
32
|
+
```
|
33
|
+
|
34
|
+
Javaは末尾再帰最適化されませんが、呼び出し回数がたかが知れていますので大丈夫かと。
|