LinkedListNode addLists(LinkedListNode l1, LinkedListNode l2, int carry) {
if(l1 == null && l2 == null && carry == 0) {
return null;
}
LinkedListNode result = new LinkedListNode(carry,null,null);
int value = carry;
if(l1 != null)
value += l1.data;
if(l2 != null)
value += l2.data;
result.data = value % 10;
//Recursive call
if(l1 != null || l2 != null || value >= 10) {
LinkedListNode more = addLists(l1 == null? null : l1.next,
l2 == null? null : l2.next,
value >= 10? 1 : 0);
result.setNext(more);
}
return result;
}
我用的addLists(arg1,arg2,arg3)
遞歸調用的疑惑是:遞歸方法如何返回最終值並分配其結果?
- 究竟是什麼每次遞歸調用後存放在
more
?換句話說,將more
堆積起來各自的遞歸調用的結果? - 在遞歸調用中是否會執行語句(遞歸調用後)
result.setNext(more)
? - 最終的
return
值如何工作?
我理解遞歸的概念,並且經歷了各種其他的答案。然而,return
聲明以及遞歸呼叫被分配到more
的情況看起來不同,並且使其令人困惑。真的很感謝這個場景的簡單解釋。謝謝。
也許不要認爲它是遞歸:把它想成「只是調用一個方法」。如果對'addLists(a,b,c)'的調用是'doSomething(a,b,c)',你能回答這些問題嗎? –
遞歸方法調用與非遞歸方法調用沒有區別。被調用的方法最終返回或拋出異常,就是這樣。在第一種情況下,調用方法的執行正常繼續。 –
可能重複[這裏的遞歸如何工作?](http://stackoverflow.com/questions/2406824/how-does-the-recursion-here-work) – Prune