## Les tours de Hanoï

La tour de Hanoï, ou les tours de Hanoï, aussi appelé la Tour de Brahma ou les tours de Brahma, est un jeu ou puzzle mathématique. Il consiste en trois tours, et un nombre de disques de différentes tailles qui peuvent glisser sur n'importe quelle tour. Le puzzle commence avec tous les disques en une belle pile selon l'ordre croissant de la taille, le plus petit en haut, sur une tour, formant donc une pyramide. L'objectif du puzzle est de déplacer la pile entière jusqu'à une autre tour, en respectant les règles suivantes :

Le but de ce puzzle est de déplacer tous les disques de la pile vers un autre piquet en respectant les règles suivantes :

- Seul un disque peut être bougé à la fois.
- Chaque mouvement consiste à prendre le disque supérieur de l'une des tours et à le déposer sur une autre tour, au sommet des autres disques qui peuvent déjà être présents sur cette tour.
- Aucun disque ne peut être placé au dessus d'un disque plus petit.

### Objectif de l'exercice

Écrivez le corps de la méthode : `[!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[/!])`

Cette méthode résout récursivement le problème. Le premier paramètre (nommé `hauteur`) est la taille de la pile à déplacer. Le second paramètre (nommé `src`) est l'index de la pile initiale. Le troisième paramètre (nommé `other`) est l'index du piquet inutilisé, tandis que le quatrième paramètre (nommé `dst`) est l'index du piquet vers lequel la pile dont être déplacée.

La clé pour résoudre de puzzle est de reconnaître qu'il peut être résolu en cassant le problème en un ensemble de problèmes de plus petites tailles et de continuer cette réduction de la taille du problème jusqu'à atteindre une solution.

Voici le pseudo-code de la solution :

- Étiquetons les tours A, B, C (ces étiquettes peuvent changer à différentes étapes)
- Soit n le nombre total de disques (la hauteur de la tour initiale)
- Numérotez les disques de 1 (le plus petit, le plus en haut) à n (le plus large, le plus en bas)

Pour déplacer n disques du poteau A au poteau C :

- déplacer n-1 disques de A vers B. Cela laisse le disque numéro n seul sur le poteau A
- déplacer le disque numéro n de A vers C
- déplacer n-1 disques de B vers C afin qu'ils reposent sur le disque numéro n