## Torre de Hanoi

A Torre de Hanoi (ou Torres de Hanoi), também conhecida como Torre de Brahma (ou Torres de Brahma), é um quebra-cabeça ou jogo matemático. Consiste de três varas, e uma quantidade de discos de tamanhos diferentes que podem encaixar em qualquer das varas. O jogo começa com os discos todos em uma vara ordenados em ordem crescente, o menor em cima, formando uma pirâmide.

O objetivo do jogo é mover a pilha completa para outra vara, obedecendo as seguintes regras:

- Apenas um disco pode ser movido por vez.
- Cada movimentação consiste em pegar o disco de cima de uma vara e colocá-lo em outra vara, no topo dos discos que já estiverem presentes.
- Nenhum disco pode ser colocado sobre um disco menor.

### Objetivo deste exercício

Escreva o núcleo do método: `[!java|c]void [/!]hanoi[!c]Rec[/!]([!java|c]int [/!]height[!scala]:Int[/!], [!java|c]int [/!]src[!scala]:Int[/!], [!java|c]int [/!]other[!scala]:Int[/!],[!java|c]int [/!]dst[!scala]:Int[/!])`

Este método vai, recursivamente, resolve o problema apresentado. O primeiro parâmetro chamado `height` é a altura da torre a mover; o segundo parâmetro `src` é o índice da torre inicial, o terceiro parâmetro `other` é o índica da vara não utilizada enquanto que o quarto parâmetro `dst` é o índice da torre final experada.

O segredo para resover este enigma é reconhecer que ele pode ser dividido em problemas menores e este em problemas menores até que uma solução é encontrada.

Aqui está um pseudo-código da solução:

- Rotule as varas como A, B, C (estes rótulos pode se mover com diferentes passos)
- Seja n o número total de discos (A altura da torre inicial)
- número de discos a partir de 1 (menor, mais alto) até n (maior, mais baixo)

Para mover n discos da vara A para a vara C:

- mova n−1 discos de A para B. Isto deixa o disco n sozinho na vara A
- Mova o disco de número n de A para C
- Mova n−1 discos de B para C de forma que eles fiquem sobre o disco de número n