Jr M. schrieb:
> Da die aufgerufene Funktion keinen neuen Wert an die aufrufende Funktion
> zurückgibt, scheint es, dass die Funktion reverse Stack als globale
> Variable verwendet. Ist das nicht eine schlechte Methode, um Rekursion
> zu implementieren? Ist es nicht besser, die Verwendung globaler
> Variablen im Stack zu vermeiden?
stack ist hier keine globale Variable. Was Du vielleicht eigentlich
meinst, ist, dass die beiden Funktionen stack nicht "out-of-place",
sondern "in-place" verändern. Sprich: Wenn Du bspw. der Funktion
reverse() einen stack übergibst, dann hast Du nach Aufruf der Funktion
reverse() nicht zwei stacks (einmal in der ursprünglichen, einmal in
umgekehrter Reihenfolge) - sondern die stack-Instanz, die Du an die
Funktion übergeben hast, hat nach dem Aufruf exakt die umgekehrte
Reihenfolge wie vorher.
Rekursiv ist der Algorithmus aber trotzdem, das hat damit nichts zu tun.
Wenn Du möchtest, dass das Ganze stattdessen out-of-place geschehen soll
(also Du nicht stack selbst verändern, sondern eine veränderte Kopie
haben willst), dann ist das einfachste: Den beiden Funktionen nicht
stack selbst übergeben, sondern eine Kopie von stack.