我正在做一个挑战,要从一个int求和并仅在小于10时返回它。
例如:
12 should return 1 + 2 = 3.
123 should return 1 + 2 + 3 = 6.
but 99 should return 9, cause 9 + 9 = 18 and 1 + 8 = 9.
因此结果必须始终小于10。
完成某人后看到其他人的解决方案:
int digital_root(int Z) {
return --Z % 9 + 1;
}
任何人都可以解释这里发生了什么吗?
我想出了这个解决方案:
int digital_root(int n) {
int time = n;
int i = 0;
int base = time;
while(base > 0)
{
i++;
base = base / 10;
}
int num = 0;
for(int j = 0; j < i; j++)
{
num = num + (time % 10);
time = time / 10;
}
if(num > 9) {
num = digital_root(num);
}
return num;
}
将我的代码与其他人进行比较,每个人所做的事情都与我所做的相似。可悲的是,张贴此消息的那个家伙没有解释它。