Ханойская башня с использованием рекурсии Python - PullRequest
0 голосов
/ 30 ноября 2018

Итак, я нашел здесь много тем о проблеме, но у меня, конечно, есть свои уникальные проблемы.

Мне нужно реализовать код на 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, и этот движется, я думаю, что у нас есть временный жезл в место назначения, над большим ...

И так далее ...

Я надеваюНе знаю, что я понял неправильно.

Спасибо.

...