Rekursion ergibt kein Sinn/Türme von Hanoi
Verfasst: Freitag 28. Januar 2022, 21:34
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)
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)