Numexa logoNumexa

Torre de Hanói

Leve todos os discos para a haste C sem colocar um maior sobre um menor.

Movimentos: 0 · mínimo: 15

Clique em uma haste para pegar o disco do topo e depois na haste de destino. Leve todos para a haste C.

A Torre de Hanói é um quebra-cabeça clássico de lógica e um dos exemplos mais usados para ensinar recursão em programação. Jogue com 3 a 10 discos, conte seus movimentos e compare com o mínimo, ou deixe a solução automática mostrar o caminho ótimo.

Fórmula do Número Mínimo de Movimentos

DiscosMovimentos mínimos (2ⁿ − 1)
37
415
531
663
7127
8255
101.023
201.048.575
6418.446.744.073.709.551.615

Algoritmo Recursivo

def hanoi(n, origem, destino, auxiliar):
    if n == 0:
        return
    hanoi(n - 1, origem, auxiliar, destino)
    print(f"Mova o disco {n} de {origem} para {destino}")
    hanoi(n - 1, auxiliar, destino, origem)

hanoi(3, "A", "C", "B")

O número de movimentos segue a recorrência T(n) = 2·T(n − 1) + 1, com T(0) = 0, cuja solução é 2ⁿ − 1. Por isso a complexidade do algoritmo é exponencial: O(2ⁿ).

Solução para 3 Discos

  1. A → C
  2. A → B
  3. C → B
  4. A → C
  5. B → A
  6. B → C
  7. A → C

Perguntas Frequentes

Quais são as regras da Torre de Hanói?

Mover todos os discos da primeira haste para a última, um disco por vez, sempre pegando o disco do topo, e nunca colocando um disco maior sobre um menor. A haste do meio serve de apoio.

Qual o número mínimo de movimentos?

Para n discos, o mínimo é 2ⁿ − 1. Com 3 discos são 7 movimentos, com 4 são 15, com 5 são 31, com 8 são 255 e com 10 são 1.023.

Qual a estratégia para resolver?

Pense de forma recursiva: para mover n discos de A para C, mova os n − 1 de cima para B, mova o maior para C e depois mova os n − 1 de B para C. Uma regra prática: o menor disco se move a cada dois lances, sempre no mesmo sentido circular.

O que diz a lenda da Torre de Hanói?

Conta-se que monges de um templo movem 64 discos de ouro seguindo essas regras, e que o mundo acabará quando terminarem. Com um movimento por segundo, seriam 2⁶⁴ − 1 segundos, cerca de 585 bilhões de anos. O quebra-cabeça foi criado pelo matemático francês Édouard Lucas em 1883.

Ferramentas Relacionadas