Torres de Hanoi C++

Cerrado
Xltron Mensajes enviados 1 Fecha de inscripción martes, 24 de julio de 2018 Estatus Miembro Última intervención martes, 24 de julio de 2018 - 24 jul 2018 a las 00:55
misterdekus Mensajes enviados 473 Fecha de inscripción miércoles, 10 de enero de 2018 Estatus Miembro Última intervención miércoles, 27 de julio de 2022 - 24 jul 2018 a las 08:33
Buen día. Quería saber si alguien podría responder mi duda acerca del siguiente código de C++ para resolver el problema de las torres de hanoi.


void jg(int discos , int torre1, int torre2, int torre3){

if(discos == 1){
cout << discos << "--->" << torre3 << endl;
}
else {
jg(discos-1,torre1,torre3,torre2);
cout << discos << "--->" << torre3 << endl;
jg(discos-1,torre2,torre1,torre3);

dentro de esa parte del código, como es que el programa determina los movimientos y cambia las variables que se van a mostrar en este caso las de torres, se que es un ejemplo de recursividad, pero no entiendo que es lo que hace que las torres a mostrar en el cout vayan cambiando, si la unica funcion que se aplica es para que el numero de discos vaya cambiando.
Gracias.

1 respuesta

misterdekus Mensajes enviados 473 Fecha de inscripción miércoles, 10 de enero de 2018 Estatus Miembro Última intervención miércoles, 27 de julio de 2022 127
24 jul 2018 a las 08:33
hola xtron

a lo que entendi es que no entiendes es la misma funcion recursiva

por ejemplo si la variable disco es igual a 3

va entrar a la funcion jg , como no es igual a 1 ( que es la "clasura" de escape, digamos)

entra al else y como en la 1ra linea del else esta llamando al jg con disco - 1 , 3 -1 , osea 2

y asi hasta llegar a 1 , te imprime :

1 -- > 3

luego te imprime el movimiento del disco 2

2 --> 2

y como llamas otra vez a la funcion jp , con disco = 2 - 1 = 1 ( te imprime algo asi 1 --> 2 )

y asi hasta terminar

Espero que te sirva la explicacion

Saludos
0