2013-06-13 127 views
-4

我有一個數字作爲N = 2345遞歸求和找到單個數字

如果我總結他們的結果將是2 + 3 + 4 + 5 = 14;

如果我進一步總結它們將是1 + 4 = 5;這是一個單一的數字;

找到這個的有效方法是什麼?

我下面的答案(Is there any better way to find the digit multiplication and summation?),並寫了一個recusive功能可按但不工作

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

沒有太大的[前一個問題]不同(http://stackoverflow.com/questions/17080289/is-there-any - 更好的路找到的最位數乘法和求和)。爲什麼兩個問題? –

回答

6

這是數量,這只是將是N%9或9,如果N%的digital root 9是0:

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

那麼不需要遞歸?取而代之的

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

+0

+1,很棒的鏈接:) –

3
int a = 123456; 
int result = a; 

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

@大衛:'10'不是單個數字 –

+0

是的。我會刪除我的評論。 – David

+0

但我需要找出步驟......也就是在第一遍中它是1 + 2 + 3 + 4 + 5 + 6 = 21。在第二遍中它是2 + 1 = 3 ..所以有兩次傳球 –

1

嘗試

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