2012-04-12 4 views
1

Ich verstehe nicht, die Bedeutung dieses rekursiven Code. Prüft es, ob zwei Werte in zusammenhängenden zwei Knoten gleich sind?Kann nicht die Bedeutung dieses rekursiven Code herauszufinden

bool has_repeats(element_t *e) 
{ 
    if (e == NULL) 
     return false; 
    if (contains_value(e->next, e->val)) 
     return true; 
    return has_repeats(e->next); 
} 

Vielen Dank im Voraus für jede Hilfe!

Antwort

3

Ja wissen Sie, was Sie sprechen von Ihrer eigenen Frage zu beantworten! Überprüft den aktuellen Knoten mit dem nächsten Knoten. Wenn sie gleich sind, gibt sie true zurück, andernfalls ruft sie rekursiv return has_repeats(e->next); zurück.

Ich denke, es würde uns helfen zu sehen, was contains_value(x, y) tatsächlich tut. Wie @Ben kommentierte, überprüft wahrscheinlich mehr als wahrscheinlich contains_value(x,y) alle Werte in der Liste.

+0

Ich vermute, 'contains_value()' überprüft nicht nur den nächsten Wert, sondern alle Werte in der Liste. In diesem Fall prüft die Funktion auf Duplikate, nicht nur auf Contigus-Duplikate (was sens unter Berücksichtigung seines Namens macht). – Ben

+0

@Ben merke, wie du den Kommentar geschrieben hast. Ich wette, du hast recht ... – JonH

Verwandte Themen