我寫了一個java遞歸函數來得到一個數字的總和,如下所示,總和也應該是單位數。我在這裏面臨的問題是應該返回else部分在結尾因爲它是給之後如果其他條件return語句:響應不同值的遞歸函數
static int recSum(int n){
int sum = 0;
while(n!=0){
sum += n%10;
n = n/10;
}
if(sum>9) {
recSum(sum);
}
else {
return sum;
}
return sum ;
}
讓我們假設N = 12345所以它需要返回5月底在那裏,因爲它是返回14.但是它會到其他部分,但正確的值不返回。我用三元運算符得到了解決方案,而沒有其他循環。但想什麼是我收到的14以前和這樣做的原因,而5(5來自14 = 1 + 4)
欣賞這個
我不知道爲什麼在某些控制路徑上放棄recSum的返回值。另請注意,Java函數參數是按值傳遞的。清楚地寫下問題imho。我不明白downvote。 – Bathsheba
@ Umadhar,遞歸方法中的'while'循環正在使其迭代運行,並消除了遞歸的目的。檢查我更正的答案。謝謝。 –
在'if'中,你計算'recSum(sum)',但從不對結果做任何事情。你的意思是把它的值賦給'sum'?請記住,Java是_never_傳遞引用,所以如果你調用'recSum(sum)',那麼recSum調用中的'n'是'sum'的一個拷貝 - 並且不會像調用者那樣修改它被關注到。 – yshavit