jueves, 31 de marzo de 2016

Java básico #10


1.10 Aplicación de la recursividad: Torres de Hanoi

          Las torres de Hanoi es un juego oriental que consta de tres columnas llamadas "origen", "destino" y "auxiliar" y una serie de discos de distintos tamaños. El juego consiste en pasar los discos de "destino" a "origen" y dejarlos de mayor a menor. Las reglas son:
  • Sólo se puede mover un disco a la vez
  • Se pueden usar as tres columnas
  • Nunca debe quedar un disco grande sobre uno pequeño

Usando la recursividad:
  • Si sólo hay un disco (caso base), entonces se lleva directamente a la varilla "origen".
  • Si hay que llevar n>1 (caso general) discos desde "origen" a "destino" entonces:
              - Se llevan n-1 discos de la varilla "origen" a la "auxiliar"                                                                 - Se lleva un solo disco (el que queda) de "origen" a "auxiliar"                                                         - Se traen los n-1 discos de "auxiliar" a "destino"


  1. import java.util.Scanner;
  2.  
  3. public class Hanoi{
  4.    
  5.      public static void main(String arg[] ){
  6.         Scanner sc = new Scanner(System.in); //Creamos un objeto de tipo Scanner lo veremos en la unidad 2
  7.         int n:
  8.         System.out.println("Número de discos: ");
  9.         n = sc.nextInt(); //Guardamos el numero de disco introducido por el usuario
  10.         Hanoi(n, 123); // 1: origen  2: auxiliar   3: destino
  11.     }
  12.  
  13. //Método torres de Hanoi recursivo
  14.  
  15.      public static void Hanoi(int n, int origen, int auxiliar, int destino){
  16.          if(n==0){
  17.              System.out.println("mover disco de "+origen+" a "+destino);
  18.          }else{
  19.              Hanoi(n-1,origen, destino, auxiliar);
  20.              System.out.println("mover disco de "+origen+" a "+destino);
  21.              Hanoi(n-1, origen, destino, auxiliar);
  22.         }
  23.      }
  24. }

No hay comentarios:

Publicar un comentario