bueno, estoy haciendo una practica de las torres de hanoi en la que un brazo robotico tiene que solucionarlo.
Pero tengo un problemalla con el algoritmo recursivo. (Perdonad que este en catalan pero creo q lo entendereis sin problemas)
if ((torre1->nom == 'A' || torre1->nom == 'B') && (torre2->nom == 'A' || torre2->nom == 'B'))
torreAux=&torreC;
else if((torre1->nom == 'A' || torre1->nom == 'C') && (torre2->nom == 'A' || torre2->nom == 'C'))
torreAux=&torreB;
else
torreAux=&torreA;
if(npeces!=1){
MourePeces(torre1, torreAux, npeces-1);
printf("n1er: Canviar la peça de la torre %c a la torre %c", torre1->nom, torre2->nom);
CanviarPeca(torre1, torre2);
MourePeces(torreAux, torre2, npeces-1);
}
else{
printf("n2n: Canviar la peça de la torre %c a la torre %c", torre1->nom, torre2->nom);
CanviarPeca(torre1, torre2);
}
}
Esto me funciona para cuando el numero de piezas es par. Pero cuando el numero de piezas es impar las torres hay que cambiarlas.
Es decir. Si yo tengo 2 piezas muevo la primera a la torre auxiliar, la segunda al destino y la primera a destino. Y se acabo.
Si yo tengo 3 piezas la primera tiene que ir a destino, la segunda a auxiliar, la primera a auxiliar, la tercera a destino, etc...
Como veis el primer movimiento varia para torre auxiliar y destino.
Podeis darme algo de luz al problema?? me estoy volviendo loco !!!