Hey,
vielleicht kommt euch das Problem mit dem Spiel "Türme von Hanoi" bekannt vor. Hier ist einmal der Code von einer Webseite die diesen erstellt hat. Er basiert auf Rekursion, jedoch scheint er mir nicht logisch, wie kann denn jemals "if source:, target.append(source.pop()), hanoi(n - 1, helper, source, target) " aufgerufen werden, wenn immer vorher die Funktion selbst aufgerufen wird? Dachte ich hätte Rekursion verstanden, aber das Erscheint mir überhaupt nicht logisch, kann mir jemand erklären, wie das "if"-Statement aufgerufen werden kann/wie da python funktioniert?
def hanoi(n, source, helper, target):
--- if n > 0:
------ hanoi(n - 1, source, target, helper)
------ if source:
---------- target.append(source.pop())
------ hanoi(n - 1, helper, source, target)
source = [4,3,2,1]
target = []
helper = []
hanoi(len(source),source,helper,target)
print (source, helper, target)
Rekursion ergibt kein Sinn/Türme von Hanoi
Ich glaube, was bei Rekursion manchmal missverstanden wird, ist, dass das Programm nicht einfach nur "hart" an eine andere Stelle springt. Sobald eine rekursiv aufgerufene Funktion beendet ist, wird das Programm an der Stelle (bildlich gesprochen) "hinter" dem ursprünglichen Funktionsaufruf wieder fortgesetzt. Ähnlich wie man bei einer Kellertreppe auf dem Rückweg dieselben Stufen in umgekehrter Reihenfolge wieder hochgehen muss.