SlideShare uma empresa Scribd logo
1 de 2
Baixar para ler offline
Código recursivo
package hanoi;
import java.io.*;
public class Hanoi
{static int moves=0; //cantidad de movimientos
static int getInt(){
String line;
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
try{
line = in.readLine();
int i = Integer.valueOf(line).intValue();
return i;}
catch (Exception e){
System.out.println("Digite un numero valido.n" +
"se asume como el valor de 1");
return 1;}}
/*Funcion para mover disco de torre a torre*/
static void hanoi(int altura, char deTorre, char aTorre, char conTorre)
{if (altura >= 1){
hanoi(altura-1, deTorre, conTorre, aTorre);
moverDisco(deTorre, aTorre);
hanoi(altura-1, conTorre, aTorre, deTorre);}}
/*funcion para imprimir el movimiento del disco*/
static void moverDisco(char deTorre, char aTorre)
{moves++;
System.out.print(deTorre);
System.out.print(aTorre);
System.out.print(((moves % 20)==0) ? 'n' : ' ');}
/*Funcion para Ingresar la cantidad de discos*/
public static void main(String[] args)
{
int AlturaTorre;
char deTorre='A', aTorre='B', conTorre='C';
System.out.println("Digite Cantidad de discos");
System.out.print("y presione Enter");
System.out.print (" ");
AlturaTorre = getInt();
hanoi(AlturaTorre, deTorre, aTorre, conTorre);
System.out.println();
}
}
Código iterativo
package iterativo;
import java.util.Scanner;
public class Iterativo {
static void ToresDeHanoiIterativo(int nroDiscos,char origen,char destino,char auxiliar)
{ char pilaO[] = new char[10];
char pilaD[] = new char[10];
char pilaX[] = new char[10];
int pilaN[] = new int[10];
int tope =0;
char varaux;
boolean band;
band=false;
while(nroDiscos>0 && band==false){
while(nroDiscos>1){
tope=tope+1;
pilaN[tope]=nroDiscos;
pilaO[tope]=origen;
pilaD[tope]=destino;
pilaX[tope]=auxiliar;
nroDiscos=nroDiscos-1;
varaux=destino;
destino=auxiliar;
auxiliar=varaux;}
System.out.println("Mover un disco de " + origen +" --> " + destino );
band=true;
if(tope>0){
nroDiscos=pilaN[tope];
origen=pilaO[tope];
destino=pilaD[tope];
auxiliar=pilaX[tope];
tope=tope-1;
System.out.println("Mover un disco de " + origen +" --> " + destino );
nroDiscos=nroDiscos-1;
varaux=origen;
origen=auxiliar;
auxiliar=varaux;
band=false;} }}
System.out.println("Ingrese el numero de discos:");
Scanner n = new Scanner(System.in);
int a = n.nextInt();
ToresDeHanoiIterativo(a,'O','D','A');
}}

Mais conteúdo relacionado

Mais procurados

Codigo del metodo de ordenamiento Radixsort
Codigo del metodo de ordenamiento RadixsortCodigo del metodo de ordenamiento Radixsort
Codigo del metodo de ordenamiento RadixsortDiego Rodrigo Jurado
 
Introducción a la programación en c++
Introducción a la programación en c++Introducción a la programación en c++
Introducción a la programación en c++empirreamm
 
Programa que suma y multiplica
Programa que suma y multiplicaPrograma que suma y multiplica
Programa que suma y multiplicavanelicciardello
 
Programa para la suma y multiplicación de 2 números decimales
Programa para la suma y multiplicación de 2 números decimalesPrograma para la suma y multiplicación de 2 números decimales
Programa para la suma y multiplicación de 2 números decimalesesolimando
 
Ordenamiento shell
Ordenamiento shellOrdenamiento shell
Ordenamiento shellAngel Duarte
 
Presentación arraysobjetos
Presentación arraysobjetosPresentación arraysobjetos
Presentación arraysobjetossilsilvetti
 
Número mayor y menor de una secuencia de enteros positivos en C++.
Número mayor y menor de una secuencia de enteros positivos en  C++.Número mayor y menor de una secuencia de enteros positivos en  C++.
Número mayor y menor de una secuencia de enteros positivos en C++.Carlos Aviles Galeas
 
Numeros de armstrong en c programacion estructurada
Numeros de armstrong en c programacion estructuradaNumeros de armstrong en c programacion estructurada
Numeros de armstrong en c programacion estructuradaAndreyAraya5
 
Tablas Hash (Roberto Cancio González)
Tablas Hash (Roberto Cancio González)Tablas Hash (Roberto Cancio González)
Tablas Hash (Roberto Cancio González)edi.euitio
 
Ejercicios con arreglos presentación gráfica
Ejercicios con arreglos presentación gráficaEjercicios con arreglos presentación gráfica
Ejercicios con arreglos presentación gráficaDiroplan
 
Arreglos
ArreglosArreglos
ArreglosClariza
 

Mais procurados (17)

Cl linea
Cl lineaCl linea
Cl linea
 
Codigo del metodo de ordenamiento Radixsort
Codigo del metodo de ordenamiento RadixsortCodigo del metodo de ordenamiento Radixsort
Codigo del metodo de ordenamiento Radixsort
 
Elvis
ElvisElvis
Elvis
 
Introducción a la programación en c++
Introducción a la programación en c++Introducción a la programación en c++
Introducción a la programación en c++
 
Funciones
FuncionesFunciones
Funciones
 
Programa que suma y multiplica
Programa que suma y multiplicaPrograma que suma y multiplica
Programa que suma y multiplica
 
Programa para la suma y multiplicación de 2 números decimales
Programa para la suma y multiplicación de 2 números decimalesPrograma para la suma y multiplicación de 2 números decimales
Programa para la suma y multiplicación de 2 números decimales
 
Practica 5
Practica 5Practica 5
Practica 5
 
Vectores en c++
Vectores en c++Vectores en c++
Vectores en c++
 
Ordenamiento shell
Ordenamiento shellOrdenamiento shell
Ordenamiento shell
 
Presentación arraysobjetos
Presentación arraysobjetosPresentación arraysobjetos
Presentación arraysobjetos
 
AsignacióN DináMica
AsignacióN DináMicaAsignacióN DináMica
AsignacióN DináMica
 
Número mayor y menor de una secuencia de enteros positivos en C++.
Número mayor y menor de una secuencia de enteros positivos en  C++.Número mayor y menor de una secuencia de enteros positivos en  C++.
Número mayor y menor de una secuencia de enteros positivos en C++.
 
Numeros de armstrong en c programacion estructurada
Numeros de armstrong en c programacion estructuradaNumeros de armstrong en c programacion estructurada
Numeros de armstrong en c programacion estructurada
 
Tablas Hash (Roberto Cancio González)
Tablas Hash (Roberto Cancio González)Tablas Hash (Roberto Cancio González)
Tablas Hash (Roberto Cancio González)
 
Ejercicios con arreglos presentación gráfica
Ejercicios con arreglos presentación gráficaEjercicios con arreglos presentación gráfica
Ejercicios con arreglos presentación gráfica
 
Arreglos
ArreglosArreglos
Arreglos
 

Destaque

1ªaula história educ.brasil
1ªaula história educ.brasil1ªaula história educ.brasil
1ªaula história educ.brasilMarcilio Sampaio
 
Contos clássicos slides 6 b
Contos clássicos slides 6 bContos clássicos slides 6 b
Contos clássicos slides 6 bMAJSSIMO
 
Qs Talk seminar klinish onderzoek
Qs Talk seminar klinish onderzoekQs Talk seminar klinish onderzoek
Qs Talk seminar klinish onderzoekPeter Ros
 
Fighting the Digital Divide through Education: Reflections & Conclusions
Fighting the Digital Divide through Education: Reflections & ConclusionsFighting the Digital Divide through Education: Reflections & Conclusions
Fighting the Digital Divide through Education: Reflections & ConclusionsIsmael Peña-López
 
10 заповедей инноваций
10 заповедей инноваций10 заповедей инноваций
10 заповедей инновацийVadim Kotelnikov
 
NECA Social Media Presentation
NECA Social Media PresentationNECA Social Media Presentation
NECA Social Media PresentationKMK Media Group
 
Индивидуальное продвижение - шаг в сторону продвижения по лидам
Индивидуальное продвижение - шаг в сторону продвижения по лидамИндивидуальное продвижение - шаг в сторону продвижения по лидам
Индивидуальное продвижение - шаг в сторону продвижения по лидамMegaIndexTV
 
Oral Presentation
Oral PresentationOral Presentation
Oral Presentationguest02b4a9
 
Pwd voiles a l'horizo nop
Pwd voiles a l'horizo nopPwd voiles a l'horizo nop
Pwd voiles a l'horizo nopeosorio
 
Peliculas ciencia ficcion
Peliculas ciencia ficcionPeliculas ciencia ficcion
Peliculas ciencia ficcionpilarandres
 
Индекс повышения квалификации среди франчайзинговых систем в России 2012 г.
Индекс повышения квалификации среди франчайзинговых систем в России 2012 г.Индекс повышения квалификации среди франчайзинговых систем в России 2012 г.
Индекс повышения квалификации среди франчайзинговых систем в России 2012 г.Andrey Kryvonos
 
R2Innovations / OncoVision : Sentinella - your new eyes
R2Innovations / OncoVision : Sentinella - your new eyesR2Innovations / OncoVision : Sentinella - your new eyes
R2Innovations / OncoVision : Sentinella - your new eyesRemmelt76
 
Financial Services Marketing Strategy
Financial Services Marketing StrategyFinancial Services Marketing Strategy
Financial Services Marketing Strategyandrewpappas
 
EN_Bachelor_Degree_Sienna
EN_Bachelor_Degree_SiennaEN_Bachelor_Degree_Sienna
EN_Bachelor_Degree_SiennaGabriele Sienna
 

Destaque (20)

1ªaula história educ.brasil
1ªaula história educ.brasil1ªaula história educ.brasil
1ªaula história educ.brasil
 
Contos clássicos slides 6 b
Contos clássicos slides 6 bContos clássicos slides 6 b
Contos clássicos slides 6 b
 
Qs Talk seminar klinish onderzoek
Qs Talk seminar klinish onderzoekQs Talk seminar klinish onderzoek
Qs Talk seminar klinish onderzoek
 
Violencia fisica
Violencia fisicaViolencia fisica
Violencia fisica
 
Fighting the Digital Divide through Education: Reflections & Conclusions
Fighting the Digital Divide through Education: Reflections & ConclusionsFighting the Digital Divide through Education: Reflections & Conclusions
Fighting the Digital Divide through Education: Reflections & Conclusions
 
10 заповедей инноваций
10 заповедей инноваций10 заповедей инноваций
10 заповедей инноваций
 
Materia
MateriaMateria
Materia
 
NECA Social Media Presentation
NECA Social Media PresentationNECA Social Media Presentation
NECA Social Media Presentation
 
Индивидуальное продвижение - шаг в сторону продвижения по лидам
Индивидуальное продвижение - шаг в сторону продвижения по лидамИндивидуальное продвижение - шаг в сторону продвижения по лидам
Индивидуальное продвижение - шаг в сторону продвижения по лидам
 
Oral Presentation
Oral PresentationOral Presentation
Oral Presentation
 
Pwd voiles a l'horizo nop
Pwd voiles a l'horizo nopPwd voiles a l'horizo nop
Pwd voiles a l'horizo nop
 
Peliculas ciencia ficcion
Peliculas ciencia ficcionPeliculas ciencia ficcion
Peliculas ciencia ficcion
 
Индекс повышения квалификации среди франчайзинговых систем в России 2012 г.
Индекс повышения квалификации среди франчайзинговых систем в России 2012 г.Индекс повышения квалификации среди франчайзинговых систем в России 2012 г.
Индекс повышения квалификации среди франчайзинговых систем в России 2012 г.
 
Recommendation Letter 2
Recommendation Letter 2Recommendation Letter 2
Recommendation Letter 2
 
R2Innovations / OncoVision : Sentinella - your new eyes
R2Innovations / OncoVision : Sentinella - your new eyesR2Innovations / OncoVision : Sentinella - your new eyes
R2Innovations / OncoVision : Sentinella - your new eyes
 
Financial Services Marketing Strategy
Financial Services Marketing StrategyFinancial Services Marketing Strategy
Financial Services Marketing Strategy
 
EN_Bachelor_Degree_Sienna
EN_Bachelor_Degree_SiennaEN_Bachelor_Degree_Sienna
EN_Bachelor_Degree_Sienna
 
URUS NPIK-GULA MUDAH
URUS NPIK-GULA MUDAHURUS NPIK-GULA MUDAH
URUS NPIK-GULA MUDAH
 
Exercise6(database)
Exercise6(database)Exercise6(database)
Exercise6(database)
 
Mecanismos(1)
Mecanismos(1)Mecanismos(1)
Mecanismos(1)
 

Mais de Juan Monsalve Constanzo (7)

Problemas
ProblemasProblemas
Problemas
 
Grafos
GrafosGrafos
Grafos
 
Recorrido de grafos
Recorrido de grafosRecorrido de grafos
Recorrido de grafos
 
Representacion de grafos
Representacion de grafosRepresentacion de grafos
Representacion de grafos
 
Informe insercion
Informe insercionInforme insercion
Informe insercion
 
Cuadro
CuadroCuadro
Cuadro
 
Informe analisis de algoritmos
Informe analisis de algoritmosInforme analisis de algoritmos
Informe analisis de algoritmos
 

Algoritmo Torre de Hanoi recursivo y iterativo

  • 1. Código recursivo package hanoi; import java.io.*; public class Hanoi {static int moves=0; //cantidad de movimientos static int getInt(){ String line; BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); try{ line = in.readLine(); int i = Integer.valueOf(line).intValue(); return i;} catch (Exception e){ System.out.println("Digite un numero valido.n" + "se asume como el valor de 1"); return 1;}} /*Funcion para mover disco de torre a torre*/ static void hanoi(int altura, char deTorre, char aTorre, char conTorre) {if (altura >= 1){ hanoi(altura-1, deTorre, conTorre, aTorre); moverDisco(deTorre, aTorre); hanoi(altura-1, conTorre, aTorre, deTorre);}} /*funcion para imprimir el movimiento del disco*/ static void moverDisco(char deTorre, char aTorre) {moves++; System.out.print(deTorre); System.out.print(aTorre); System.out.print(((moves % 20)==0) ? 'n' : ' ');} /*Funcion para Ingresar la cantidad de discos*/ public static void main(String[] args) { int AlturaTorre; char deTorre='A', aTorre='B', conTorre='C'; System.out.println("Digite Cantidad de discos"); System.out.print("y presione Enter"); System.out.print (" "); AlturaTorre = getInt(); hanoi(AlturaTorre, deTorre, aTorre, conTorre); System.out.println(); } }
  • 2. Código iterativo package iterativo; import java.util.Scanner; public class Iterativo { static void ToresDeHanoiIterativo(int nroDiscos,char origen,char destino,char auxiliar) { char pilaO[] = new char[10]; char pilaD[] = new char[10]; char pilaX[] = new char[10]; int pilaN[] = new int[10]; int tope =0; char varaux; boolean band; band=false; while(nroDiscos>0 && band==false){ while(nroDiscos>1){ tope=tope+1; pilaN[tope]=nroDiscos; pilaO[tope]=origen; pilaD[tope]=destino; pilaX[tope]=auxiliar; nroDiscos=nroDiscos-1; varaux=destino; destino=auxiliar; auxiliar=varaux;} System.out.println("Mover un disco de " + origen +" --> " + destino ); band=true; if(tope>0){ nroDiscos=pilaN[tope]; origen=pilaO[tope]; destino=pilaD[tope]; auxiliar=pilaX[tope]; tope=tope-1; System.out.println("Mover un disco de " + origen +" --> " + destino ); nroDiscos=nroDiscos-1; varaux=origen; origen=auxiliar; auxiliar=varaux; band=false;} }} System.out.println("Ingrese el numero de discos:"); Scanner n = new Scanner(System.in); int a = n.nextInt(); ToresDeHanoiIterativo(a,'O','D','A'); }}