-4

我有一个数字 N=2345

如果我将它们相加,结果将是 2+3+4+5 =14;

如果我进一步将它们相加,它将是 1+4 = 5;这是一个数字;

找到这个的有效方法是什么?

我正在关注答案(有没有更好的方法来找到数字乘法和求和?)并写了一个递归函数但不起作用

public static int FindSingleDigit(int N)
{
        var sum = 0;
        while (N != 0)
        {
            sum = sum + (N % 10);
            N = N / 10;
        }
        if (sum >= 10) FindSingleDigit(sum);
        return sum;
}
4

3 回答 3

6

这就是digital root数字,如果 N%9 为 0,它将是 N%9 或 9:

int digitalRoot = 1 + (N-1)%9;

所以不需要递归?

于 2013-06-13T06:26:00.053 回答
3
int a = 123456;
int result = a;

while (result >= 10)
   result = result.ToString()
                  .Sum(x => int.Parse(x.ToString()));
于 2013-06-13T06:28:05.933 回答
1

代替

if (sum >= 10) FindSingleDigit(sum);
    return sum;

尝试

if (sum >= 10)
    return FindSingleDigit(sum);
else
    return sum;
于 2013-06-13T06:43:51.157 回答