2015-11-06 35 views
1

如何以遞歸方式總和數字的數字,直到剩下一個數字爲止?遞歸:數字的總和數字,直到剩下一個數字

示例:輸入9234,結果將爲9,因爲9 + 2 + 3 + 4 = 18,然後1 + 8 = 9

這是我的時刻代碼,但我想總結,直到只有一個單一的數字

int getsum(int n) { 
    return n == 0 ? 0 : n % 10 + getsum(n/10); 
} 
+1

將(n == 0)更改爲(n小於10)。並返回n,而不是0 – Ryan

回答

-2

有幾種可能性,這裏就是其中之一:

public static int getSum(int n) { 
    int s = getSumHelper(n); // your original (private) method 
    while (s > 9) 
     s = getSumHelper(s); 
    return s; 
} 

編輯:您的原始代碼的完整性,因爲似乎有混淆。

private static int getSumHelper(int n) { 
    return n == 0 ? 0 : n % 10 + getSumHelper(n/10); 
} 
+0

什麼是getSumHelper()方法 – user4746449

+0

@ user4746449 btw您的原始代碼也可以正常工作,您只需更多一步,最後一次除法的結果爲0,這只是一個改進,而不是錯誤。所以你可以使用它作爲'getSumHelper()' – maraca