Es un problema clásico de recursión ya que se pertenece a la clase de problemas cuya solución se simplifica notablemente al utilizar recursión. Se tienen 3 torres y un conjunto de N discos de diferentes temarios. Cada uno de los mismos tiene una perforación en el centro en el que permiten deslizarse por cualquiera de las torres inicialmente; los N discos están ordenados de mayor a menor en una de las torres. Se deben pasar los discos a otra torre, utilizando la tercera como un auxiliar.
Este movimiento debe hacerse respetando las siguientes reglas.
1. En cada movimiento solo puede intervenir un disco, por lo tanto siempre será disco superior al que pueda moverse.
2. No puede quedar un disco sobre uno de menor tamaño.
Supongamos que las torres se identifican con los nombres A,B,C. los discos están inicialmente en la torre A(origen) se los quiere transferir a la torre B(destino), utilizando la torre C como un auxiliar. A continuación se presentara el resultado.
PROBLEMA:
ELABORAR UN PROGRAMA QUE CALCULE LOS MOVIMIENTOS DE LA TORRE DE HANOI
SOLUCIÓN EN JAVA
Aqui se encuentra los atributos numDiscos y numMovimientos, donde son de tipo de datos enteros. Donde despues los encapsulamos para que sean privados y sean gets y sets. |
Aqui se encuentran los metodos Intercambio y Jugar, donde intercambio mueve los dscos del poste A al poste B, del poste A al poste C y Jugar hace el total de los movimientos efectuados. |
Aqui se encuentra la clase Solucionorres, donde esta el metodo main; como tambien intercambio y jugar. |
CONCLUSIÓN