Hoy os voy a enseñar a resolver el juego de las Torres de Hanoi en Java con un método recursivo. Si aún no sabes qué es recursividad, puedes ver este post donde te los explico.

Método recursivo en Java para el juego de las Torres de Hanoi

El juego de las Torres de Hanoi es un Rompecabezas muy conocido inventado por el matemático francés Edouard Lucas. Si quieres saber más sobre el juego, cómo solucionarlo, o si ni siquiera sabes en qué consiste, puedes consultar este enlace de Wikipedia.

Nosotros vamos al grano, vamos a solucionar el problema de las torres de Hanoi con un método en Java para n discos de forma recursiva.

    public void torresHanoi(int discos, int torre1, int torre2, int torre3){
        // Caso Base
     
        if (discos==1){
            System.out.println("Mover disco de Torre " + torre1 + " a Torre " + torre3);
        } else {
            // Dominio
         
            // Llamamos a la función de tal forma que decrementamos
            // el número de discos, y seguimos el algoritmo
            // (origen, destino, auxiliar)
            torresHanoi(discos-1, torre1, torre3, torre2);
            System.out.println("Mover disco de Torre " + torre1 + " a Torre " + torre3);
            // En esta ocasión siguiendo el algoritmo hacemos lo siguiente
            // (auxiliar, origen, destino)
            torresHanoi(discos-1, torre2, torre1, torre3);
        }
     
    }

Como podemos comprobar, método nos devolverá los pasos de los discos que tenemos que ir moviendo y la torre a donde deben moverse. Por lo que si hacemos problema.torresHanoi (3, 1, 2, 3) el resultado sería el siguiente:

Mover disco de Torre 1 a Torre 3
Mover disco de Torre 1 a Torre 2
Mover disco de Torre 3 a Torre 2
Mover disco de Torre 1 a Torre 3
Mover disco de Torre 2 a Torre 1
Mover disco de Torre 2 a Torre 3
Mover disco de Torre 1 a Torre 3

Puedes comprobar que la solución al juego es correcta en este enlace.