mardi 10 juillet 2012

Les tours de Hanoi (solution récursive)


C'est un jeu de réflexion qui consiste à déplacer un nombre donné de disque d'une tour "départ" à une tour "arrivée", à l'aide d'une troisième tour "intermédiaire" et ceci en respectant deux règles : 
- Ne déplacer q'un seul disque à la fois.
- Ne pas placer un disque sur un autre plus petit.
Exemple de résolution pour le cas de 4 disques : 


J'avoue que la première fois j'avais du mal à comprendre l'algorithme récursive de la résolution surtout du fait que la notion de récursivité été encore fraîche et un peu mystérieuse pour moi, mais après j'ai constaté qu'il n'y avait pas une autre solution plus facile :p

La solution en langage C :
#include <stdio.h>

void hanoi(int n,char A,char B,char C)
{
    if(n==1)
    printf("deplacer %c vers %c\n",A,C);
    else
    {
      hanoi(n-1,A,C,B);
      printf("deplacer %c vers %c\n",A,C);
      hanoi(n-1,B,A,C);
    }
}

main()
{
  char a='a',b='b',c='c';
  int n;
   while(1)
  {
    printf("Entrer n : ");
    scanf("%d",&n);
    printf("\n");
    hanoi(n,a,b,c);
  }
}

3 commentaires:

rss


Pour ne rien rater des nouvautés de Devinge inscrivez-vous à la newslettre

Entrer votre email :