Programación en lenguaje C de la Torre de Hanoi
Para el problema de la Torre de Hanoi, cuando solo se mueve un disco, el disco se mueve directamente de la aguja A a la aguja C. Si el disco en movimiento es n (n & gt; 1), entonces Para varios pasos: mueva (n-1) discos de la aguja A a la aguja B (con la ayuda de la aguja C; mueva el último disco de la aguja A a la aguja C; aguja (con la ayuda de la aguja A). Cada vez que lo hagas, habrá un disco menos en movimiento, disminuyendo gradualmente. Finalmente, cuando n es 1, se completa todo el proceso de movimiento.
Por lo tanto, se puede diseñar una función recursiva para resolver el problema de la Torre de Hanoi, y todo el movimiento del disco se puede realizar mediante recursividad. El proceso de resolución de problemas es una simulación de operaciones reales.
Código de programa
# include & ltstdio.h & gt
int main()
{
int hanoi(int, char, char, char);
int n, counter
printf("Ingrese el número de discos:
scanf"); (" %d ",& ampn);
printf("\n");
counter=hanoi(n,'A','B','C') ;
Devuelve 0;
}
int hanoi(int n, char x, char y, char z)
{
int mover(char, int, char);
Si (n==1)
mover(x, 1, z);
Otro
{
Hanói(n-1,x,z,y);
Mover(x,n,z); p>
Hanói(n-1,y,x,z);
}
devuelve 0;
}
int move(char getone, int n, char putone)
{
static int k = 1;
printf("%2d:%3d # %c - %c\n ",k,n,getone,putone);
If (k++%3==0)
printf(" \ n ");
Devuelve 0;
}