如何以遞歸方式總和數字的數字,直到剩下一個數字爲止?遞歸:數字的總和數字,直到剩下一個數字
示例:輸入9234
,結果將爲9
,因爲9 + 2 + 3 + 4 = 18
,然後1 + 8 = 9
。
這是我的時刻代碼,但我想總結,直到只有一個單一的數字
int getsum(int n) {
return n == 0 ? 0 : n % 10 + getsum(n/10);
}
如何以遞歸方式總和數字的數字,直到剩下一個數字爲止?遞歸:數字的總和數字,直到剩下一個數字
示例:輸入9234
,結果將爲9
,因爲9 + 2 + 3 + 4 = 18
,然後1 + 8 = 9
。
這是我的時刻代碼,但我想總結,直到只有一個單一的數字
int getsum(int n) {
return n == 0 ? 0 : n % 10 + getsum(n/10);
}
有幾種可能性,這裏就是其中之一:
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);
}
什麼是getSumHelper()方法 – user4746449
@ user4746449 btw您的原始代碼也可以正常工作,您只需更多一步,最後一次除法的結果爲0,這只是一個改進,而不是錯誤。所以你可以使用它作爲'getSumHelper()' – maraca
將(n == 0)更改爲(n小於10)。並返回n,而不是0 – Ryan