递归总和找到单个数字

时间:2013-06-13 06:19:17

标签: c# algorithm

我的数字为N = 2345

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

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

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

我正在按照答案(Is there any better way to find the digit multiplication and summation?)并编写了一个隐形功能但不起作用

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;
}

3 个答案:

答案 0 :(得分:6)

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

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

所以不需要递归吗?

答案 1 :(得分:3)

int a = 123456;
int result = a;

while (result >= 10)
   result = result.ToString()
                  .Sum(x => int.Parse(x.ToString()));

答案 2 :(得分:1)

而不是

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

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