void hanoi (int n, Tour origine, Tour destination, Tour intermediaire)
La fonction hanoi est dite récursive, ce qui signifie qu'elle s'appelle elle-même.
Pour transporter n disques d'une tour "origine" à une tour "destination"
en utilisant une tour "intermédiaire", il suffit de :
- transporter (n - 1) disques de la tour "origne" à la tour "intermédiaire" en
utilisant la tour "destination"
- transporter le dernier disque de la tour "origine" à la tour "destination"
- transporter (n - 1) disques de la tour "intermédiaire" à la tour "destination" en utilisant la tour "origine".
C'est exactement ce qui est décrit dans la fonction hanoi ; cette description nécessite la récursivité.
if (n>0)
Cette condition est le "test d'arrêt" sur les appels récursifs.
Il faut se méfier, avec une fonction récursive, de ne pas oublier de mettre un test d'arrêt ;
celui-ci évite que la fonction s'appelle elle-même éternellement. Le test d'arrêt peut se situer au début de la fonction récursive (comme ici), ou bien juste avant les appels récursifs à l'intérieur de la fonction.