2016-04-20 7 views
0

Also lerne ich über die Verarbeitung verknüpfter Liste. Wie würde ich die Elemente innerhalb der Knoten rekursiv hinzufügen. Ich könnte sie hinzufügen, indem Sie sum = h.item +h.next.item+h.next.next.item tun, aber das würde nur funktionieren, wenn ich kleine verknüpfte Liste hätte. Unten ist meine Funktion addAll mit fehlgeschlagenem Versuch.Hinzufügen von Knoten rekursiv. Verknüpfte Liste

public class nodeP { 

    public static void main(String[] args) { 
     node H = new node(9); 
     H.next = new node(7); 
     H.next.next = new node(5); 

     System.out.println(addAll(H)); 
    } 

    static int addAll(node h) { 
    int sum = 0; 
    if(h.next!=null) { 
    sum += h.item + addAll(h.next); 
} 
    return sum; 
    } 
} 
+1

beachten Sie, dass, wenn Sie viele Zahlen haben, sollten Sie stattdessen eine while-Schleife in Betracht ziehen, zu vermeiden, dass zu viele recursing Anrufe haben. –

Antwort

2

Es sieht so aus, als würde Ihr Code den letzten Knoten nicht hinzufügen. Sie müssen h.item zu der Summe hinzufügen, selbst wenn h.nextnull ist.

Versuchen:

static int addAll(node h) { 
    int sum = h.item; 
    if (h.next != null) { 
     sum += addAll(h.next); 
    } 
    return sum; 
}