Итак, я нашел здесь много тем о проблеме, но у меня, конечно, есть свои уникальные проблемы.
Мне нужно реализовать код на Python 3, который играет в Ханой, используя некоторый графический объект с именем hanoi_game.
Так что мое понимание рекурсии плохое, я помню также, что изучал этот предмет в старшей школе, мне никогда не удавалось полностью его освоить, мне трудно думать о проблеме таким образом, чтобырекурсия.
Так вот мой код:
def play_hanoi(hanoi, n, src, dest, temp):
if n == 1:
hanoi.move(src, dest)
play_hanoi(hanoi, n - 1, src, temp, dest)
play_hanoi(hanoi, 1, src, dest, temp)
play_hanoi(hanoi, n - 1, temp, dest, src)
Во-первых, я знаю, что у меня здесь есть алгоритмическая ошибка, когда большой диск лежит на маленьком - я не оченьзнаете, в чем проблема, потому что я недостаточно хорошо улавливаю процесс.
Во-вторых, что здесь происходит?
Рассмотрим, когда у нас n = 3:
Мы будем вызывать функцию с n = 2, где местом назначения теперь является временный стержень, этот n = 2 вызовет n = 1, он вызываетБазовый корпус, который в свою очередь перемещает диск вперед по сравнению с последним.Теперь он поворачивается к (в моем понимании):
play_hanoi(hanoi, 1, src, dest, temp)
, который перемещает больший, оставшийся в источнике, в пункт назначения.
Теперь он превращается в:
play_hanoi(hanoi, n - 1, temp, dest, src)
где n - 1 = 1
, и этот движется, я думаю, что у нас есть временный жезл в место назначения, над большим ...
И так далее ...
Я надеваюНе знаю, что я понял неправильно.
Спасибо.