Esta es una implementación de la solución al problema de las Torres de Hanoi.
Para facilitar el despliegue de los mensajes se utilizan String para los nombre de las torres.
Noque se el método resolver( int discos) no es recursivo y se considera la interfaz para quien utiliza la clase y ejecuta el llamado inicial al método recursivo.
El método que lleva a cabo el trabajo es el método resolverR( discos, origen, intermedia, destino) que mueve la cantidad indicada de discos de la torre
origen hacia la destino pasando por la torre intermedia. El algoritmo es el indicado en el pseudocódigo del diseño anteior.
public class Hanoi { public static void resolver(int discos){ resolverR(discos, "origen","intermedia","destino"); } private static void resolverR(int discos,String origen,String intermedia, String destino){ if(discos==1) System.out.println("Mueva el disco superior de la torre "+origen+" a la torre "+destino); else { resolverR(discos-1,origen,destino,intermedia); System.out.println("Mueva el disco superior de la torre "+origen+" a la torre "+destino); resolverR(discos-1,intermedia,origen,destino); } } } |