Hallo,
ich habe rekursive Funktion geschrieben, um einen Pythagorasbaum darzustellen. Hier mal kurz eine einfache Variante der Funktion als Pseudocode notiert:
public void ZeichnePythagorasbaum(Punkt1, Punkt2, Tiefe) {
if (Tiefe >= 0) {
Tiefe--;
berechnePunkt3und4();
zeichnePolygon();
berechnePunktNeu();
ZeichnePythagorasbaum(PunktNeu, Punkt2, stufe);
ZeichnePythagorasbaum(Punkt4, PunktNeu, stufe);
}
}
ZeichnePythagorasbaum((200, 340), (270, 340),15);
1.)Die Funktion wird aufgerufen
2.) weitere Eckpunkte werden berechnet
3.) Polygon wird gezeichnet
4.) neuer Punkt wird berechnet
5.) ZeichnePythagorasbaum() ruft sich wieder selbst auf
Was ich nicht verstehe: der zweite nun folgende Funktionsaufruf dürft doch nie stattfinden...? Oder gibt die Funktion ZeichnePythorasbaum() implizit etwas zurück, bevor sie sich selbst zum zweiten Mal aufruft....?
--
Wenn ich diese Funktion wie oben konstruiert aufrufe (d.h. als einfache rekursive Funktion ohne Thread-Funktionalität etc) friert bei einer Tiefe von über 16 meine Entwicklungsumgebung ein (Intel-Laptop, OS Open-Suse, Entwicklungsumgebung Processing, JavaCode). Scheinbar ist der RAM voll. Nun kenne ich mich in Threadprogrammierung bzw. Java nicht gut aus. Gibt es grundsätzlich irgendwelche Möglichkeiten, um höhere Tiefen zu erreichen? RAM leeren nach jedem Funktionsaufruf oder ähnliches?
Viele Grüße
Schneider
Wenn ich diese Funktion wie oben konstruiert aufrufe (d.h. als einfache rekursive Funktion ohne Thread-Funktionalität etc) friert bei einer Tiefe von über 16 meine Entwicklungsumgebung ein (Intel-Laptop, OS Open-Suse, Entwicklungsumgebung Processing, JavaCode). Scheinbar ist der RAM voll. Nun kenne ich mich in Threadprogrammierung bzw. Java nicht gut aus. Gibt es grundsätzlich irgendwelche Möglichkeiten, um höhere Tiefen zu erreichen? RAM leeren nach jedem Funktionsaufruf oder ähnliches?
Viele Grüße
Schneider