Towers of Hanoi Python - comprensión de la recursión [duplicado]

Esta pregunta ya tiene una respuesta aquí:

Torre de Hanoi: algoritmo recursivo 24 respuestas

Soy completamente nuevo en Python y actualmente estoy revisando un tutorial sobre The Towers of Hanoi y la recursión. Pensé que entendía la recursión hasta que dieron este ejemplo:

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 los movimientos correctos para resolver el problema de las torres de Hanoi con 3 discos: disco móvil de A a B disco móvil de A a C disco móvil de B a C disco móvil de A a B disco móvil de C a A disco móvil de C a B moviendo el disco de A a B

Mi pregunta es, ¿cómo lo hace? ¿Podría alguien repasar las líneas de código para que yo entienda cómo imprime los movimientos correctos? Principalmente estoy confundido con cómo el valor defp ytp puede cambiar deA aB aC. Lo siento si esta es una pregunta un poco amplia. Cualquier ayuda sería muy apreciada!

Respuestas a la pregunta(5)

Su respuesta a la pregunta