Heiho,
Ich habe folgendes Problem. Ich möchte einen Trie erzeugen und dazu hab ich mir ne private, rekursive Hilfsmethode geschrieben, die überprüfen soll, ob die Anzahl an "vätern" mit der Länge des übergebenen Strings übereinstimmt. Warum ist in dem Fall eigentlich gar nicht so wichtig. Mein Problem ist nun folgendes.
Wenn ich zum Beispiel einen Eintrag "pete" habe und möchte "peter" hinzufügen, wird irgendwann diese Methode aufgerufen und sollte eigentlich zu dem Schluss kommen, dass es vorerst mal 4 Väter gibt vom anfangs übergebenen lastNode ("e"), nämlich "t", "e", "p" und die Wurzel. Also sollte am Ende n == 4 sein, die Länge beträgt jedoch 5, weil ich will ja "peter" hinzufügen.
Wenn ich das nun im Debug-Modus starte und mir angucke, läuft die Methode bis zur Wurzel, geht dann in den else-Zweig, trifft auf die return-Anweisung, wo stehen müsste 4 == 5, also false, springt dann aber nochmal zum anderen return hoch und setzt n auf 3 und warum es das tut ist mir momentan noch schleierhaft.
Das Ergebnis liefert zwar trotzdem noch false, ich will die Methode aber später wieder aufrufen und dort müsste sie eigentlich true ausgeben, was sie halt nciht tut weil im letzten Moment n noch einmal verändert wird.
Ich hoffe ihr könnt mir helfen ;-)
Ich habe folgendes Problem. Ich möchte einen Trie erzeugen und dazu hab ich mir ne private, rekursive Hilfsmethode geschrieben, die überprüfen soll, ob die Anzahl an "vätern" mit der Länge des übergebenen Strings übereinstimmt. Warum ist in dem Fall eigentlich gar nicht so wichtig. Mein Problem ist nun folgendes.
Java:
private boolean allParentsExist (int length, Node lastNode, int n) {
if (lastNode.getParent() != null) {
//call this method again and increase n by 1
return this.allParentsExist(length, lastNode.getParent(), (n + 1));
} else {
return (n == length);
}
}
Wenn ich zum Beispiel einen Eintrag "pete" habe und möchte "peter" hinzufügen, wird irgendwann diese Methode aufgerufen und sollte eigentlich zu dem Schluss kommen, dass es vorerst mal 4 Väter gibt vom anfangs übergebenen lastNode ("e"), nämlich "t", "e", "p" und die Wurzel. Also sollte am Ende n == 4 sein, die Länge beträgt jedoch 5, weil ich will ja "peter" hinzufügen.
Wenn ich das nun im Debug-Modus starte und mir angucke, läuft die Methode bis zur Wurzel, geht dann in den else-Zweig, trifft auf die return-Anweisung, wo stehen müsste 4 == 5, also false, springt dann aber nochmal zum anderen return hoch und setzt n auf 3 und warum es das tut ist mir momentan noch schleierhaft.
Das Ergebnis liefert zwar trotzdem noch false, ich will die Methode aber später wieder aufrufen und dort müsste sie eigentlich true ausgeben, was sie halt nciht tut weil im letzten Moment n noch einmal verändert wird.
Ich hoffe ihr könnt mir helfen ;-)