Torres de Hanoi Python - entendendo a recursão [duplicado]
Esta pergunta já tem uma resposta aqui:
Torre de Hanói: Algoritmo Recursivo 24 respostasEu sou completamente novo em Python e atualmente estou revisando um tutorial sobre As Torres de Hanói e a recursão. Eu pensei que tinha entendido a recursão até que eles deram este exemplo:
def moveTower(height,fromPole, toPole, withPole):
if height >= 1:
moveTower(height-1,fromPole,withPole,toPole)
moveDisk(fromPole,toPole)
moveTower(height-1,withPole,toPole,fromPole)
#print(withPole)
def moveDisk(fp,tp):
print("moving disk from",fp,"to",tp)
moveTower(3,"A","B","C")
que imprime os movimentos corretos para resolver o problema das torres de Hanói com 3 discos: movendo o disco de A para B movendo o disco de A para C movendo o disco de B para C movendo o disco de A para B movendo o disco de A para B movendo o disco de C para A movendo o disco de C para B movendo o disco de A para B
Minha pergunta é: como isso acontece ?! alguém poderia passar por cima das linhas do código para que eu entenda como ele imprime os movimentos corretos? Estou principalmente confuso com a forma como o valor defp
etp
pode mudar deA
paraB
paraC
. Desculpe se esta é uma pergunta ampla! Qualquer ajuda seria muito apreciada!