我有一个简单的数字生根功能,我想要求不同的解决方案。这是我的第一个想法。你能帮我找到更快的功能吗?
private static int digitalRooting(int inputNumber)
{
int plurality = 0,
digit = 0,
temp = 0;
while (true)
{
digit = inputNumber % 10;
temp = inputNumber / 10;
plurality = plurality + digit;
if (temp < 10)
{
plurality = plurality + temp;
break;
}
inputNumber = temp;
}
return plurality;
}
答案 0 :(得分:0)
我建议将while
转换为for
循环。一位数输入的实现速度更快(当value
处于[0..9]
范围时,我们根本不计算余数%
。但是,主要优点是代码是 terser ,而且可读。
如果您只想要当前例程的数字总和,例如12345 -> 1 + 2 + 3 + 4 + 5 == 15
:
private static int digitalRooting(int value) {
int result = 0;
for (; value > 9; value /= 10)
result += value % 10;
return result + value;
}
如果您想要实际的digital root,例如12345 -> 1 + 2 + 3 + 4 + 5 = 15 = 1 + 5 = 6
:
private static int digitalRooting(int value) {
do {
int result = 0;
for (; value > 9; value /= 10)
result += value % 10;
value = result + value;
}
while (value > 9);
return value;
}