添加数字位

Cha*_*och 7 java algorithm math

我必须构建一个方法来添加参数中给出的字符串的每个数字,直到只剩下1位数,例如1234 = (1+2+3+4) = 10 = (1+0) = 1.

起初,我认为递归调用或while循环应该没问题.但有更聪明的方法吗?也许使用模数?

1234 % 9 = 1这似乎有效...但不是:9%9不等于,9但它是0.

有没有办法在没有递归/ for/while的情况下构建这个函数?

Nik*_*las 7

我很久以前就找到了这个简单的算法.实际上,它可以使用%9,但是如果该数字的模数相等,则必须检查大小写0.

我打赌会有更多的方法来达到结果,Java中最简单的代码就像这样:

int sumAllDigits(int n) {
    return (n%9 == 0 && n!=0) ? 9 : n%9;
}
Run Code Online (Sandbox Code Playgroud)


MS *_*nth 5

int sumAllDigits(int n) {
    return (n-1)%9 + 1;
}
Run Code Online (Sandbox Code Playgroud)

适用于所有n> = 1