Recursion: Hanoi

hanoi.html
/*********************** Torres de Hanoi ***********************/
/* hanoi.c
 */
#include <stdio.h>

int mover(int, char, char, char);

/**************************** main ****************************/
void main()
{
  int n_discos, movimientos;
  
  printf("Nº de discos : ");
  scanf("%d", &n_discos);
  movimientos = mover(n_discos, 'A', 'B', 'C');
  printf("\nmovimientos efectuados: %d\n", movimientos);
}

/*************************** mover ****************************/
int mover(int n_disco, char a, char b, char c)
{
  static int movimientos = 0;
  
  if (n_disco > 0)
  {
    mover(n_disco-1, a, c, b);
    printf("mover disco de  %c  a  %c\n", a, c);
    movimientos++;
    mover(n_disco-1, b, a, c);
  }
  return movimientos;
}


No hay comentarios:

Publicar un comentario