求数字之和的三种算法

翻译

Sum of the digits

示例

123=1+2+3=6
234=2+3+4=9

算法一

思路

例:123

  1. 123%10=3

  2. 123/10=12
    12%2=2

  3. 12/10=1
    1%10=1

1
2
3
4
5
6
7
8
public int sumOfDigits(int n) {
int ans = 0;
while (n > 0) {
ans += (n % 10);
n = n / 10;
}
return ans;
}

算法二

1
2
3
4
public int sumOfDigits(int n) {
if (n == 0) return 0;
return (n % 10) + sumOfDigits(n / 10);
}

算法三

1
2
3
4
5
6
7
8
9
public int sumOfDigits(int n) {
String str = String.valueOf(n);
char[] chars = str.toCharArray();
int ans = 0;
for (char c : chars) {
ans += Integer.parseInt(c + "");
}
return ans;
}