Du hast lediglich die Anweisung, a in x Millisekunden erneut aufzurufen, auf einer Art Stack abgelegt.
nein, im gegenteil bei der Rekursion kommt der stack zur Geltung, hier hast du nur so eine Warteschelife, die in den Interval wenn möglich abgearbeitet wird und soweit ich weiß in JS nich parallel, also jeder Eintrag in der Warteschleife wartet solange bis sein Vorgänger Fertig ist.
Das weiß ich aber nicht genau.
- und zwar erst, wenn das hier abgearbeitet ist.
Erst dann kommt der Javascript-Interpreter aus der Abarbeitung von a "zurueck", erst *dann* kuemmert er sich wieder darum, was womoeglich noch auf dem "noch Abzuarbeiten"-Stapel liegt.
kann man so sagen, aber nicht Stapel. Der wird bei der Rekursion erzeugt.
Doch, das kann man sehr gut leugnen, da bin ich der gleichen Ansicht wie Struppi.
Zu Recht ;-)
- es werden immmer mehr alerts, und diese entstehen dadurch, dass a() sich selbst (über den Umweg setTimeout()) aufruft.
Nein.
a #1 ist bereits beendet, wenn der Interpreter sich wieder um seinen ToDo-Stack, den du mit setTimeout gefuellt hast, kuemmert. Und erst, wenn er das tut, wird a #2 ausgefuehrt - der Aufruf erfolgt jetzt unabhaengig von a #1, weil das laengst "tot" ist.
das ist der entscheidende Unterschied.
Die verdeutlichen *keine* Rekursion.
Weil, da gehe ich mit Struppi d'accord, keine Rekursion stattfindet.
Ich hoffe ich kann ihn mit meinen Beispielen überzeugen.
Ansonsten, hat vielleicht noch jemand irgendein Baumskript?
Vielleicht der "Rekursiver pythagoreischer Baum" der in Wikipedia genannt wird?
Struppi.