2017-02-11 1 views
-2

Scheint wie meine lineare verknüpfte Liste nicht für jede Rekursion verbinden. Brauchen Sie eine Erklärung, warum mein Code nicht funktioniert.Was ist falsch an meiner Rekursion? Versuchen, zwei Knoten in jeder Durchquerung hinzuzufügen

/** 
* Definition for singly-linked list. 
* public class ListNode { 
*  int val; 
*  ListNode next; 
*  ListNode(int x) { val = x; } 
* } 
*/ 


public class Solution { 
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) { 
     if(l1 == null) 
      return null; 
     int val = l1.val + l2.val; 
     ListNode newNode = new ListNode(val); 
     System.out.println(newNode.val); 
     return newNode.next = addTwoNumbers(l1.next, l2.next); 
    } 
} 

Ihre Eingabe

[2,4,3] [5,6,4]

Ihre stdout

Ihre Antwort

[]

Expected Antwort

[7,10,7]

+2

Bei allem Respekt hinzufügen Sie müssen uns nicht für diese Übung. Führen Sie Ihren Code unter Debugger aus und sehen Sie selbst. –

Antwort

0

Ich denke, dass Sie nicht newNode.next zurückkehrte. Sie müssen die Rekursionsmethode mit newNode.next aufrufen, aber Sie müssen newNode zurückgeben. Ps. Denken Sie daran, if (l2==null) return null;

+0

Ich habe den newNode zurückgegeben. –

+0

@MikeNguyen Wenn Sie newNode zurückgeben, scheint es, dass Sie kein Problem haben – Antonio1996

0

ändern

return newNode.next = addTwoNumbers(l1.next, l2.next); 

Um

newNode.next = addTwoNumbers(l1.next, l2.next); 
return newNode 
Verwandte Themen