Torres de Hanoi C++

Cerrado
Xltron
Message postés
1
Date d'inscription
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
Message postés
468
Date d'inscription
miércoles, 10 de enero de 2018
Estatus
Miembro
Última intervención
miércoles, 25 de mayo 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
Message postés
468
Date d'inscription
miércoles, 10 de enero de 2018
Estatus
Miembro
Última intervención
miércoles, 25 de mayo de 2022
118
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