Possuo um programa q resolve o problema das torres de hanoi, mas não to conseguindo entender o que o código está executando. É bem simples, porém para mim é complicado. segue:
import javax.swing.JOptionPane;
public class torreDeHanoi
{
private int numero_discos;
private static int cont = 0;
public torreDeHanoi( int discos )
{
numero_discos = discos;
}
public static void resolveTorres( int discos, int pino_inicial, int pino_final,
int pino_temporario )
{
if ( discos == 1 )
{
System.out.println(pino_inicial+" --> "+pino_final );
System.out.println("Numero de movimentos: "+cont);
return;
//System.out.("Numero de movimentos: "+cont);
} // fim if
// move ( discos - 1 ) discos do pino_inicial para o pino temporario recursivamente
resolveTorres( discos - 1, pino_inicial, pino_temporario, pino_final );
// move ultimo disco do pino inicial para o pino final
System.out.println(pino_inicial+" --> "+pino_final );
cont = cont+1;
// move ( disks - 1 ) disks from tempPeg to destinationPeg
resolveTorres( discos - 1, pino_temporario, pino_final, pino_inicial );
} // fim metodo resolveTorre
}
Método main
import javax.swing.*;
public class torreHanoiResolve
{
public static void main( String args[] )
{
int pino_inicial = 1;
int pino_final = 3;
int pino_temporario = 2;
int numero = Integer.parseInt(JOptionPane.showInputDialog("Digite o número de discos"));
int total_discos = numero;
torreDeHanoi torredehanoi = new torreDeHanoi( total_discos );
torreDeHanoi.resolveTorres( total_discos, pino_inicial, pino_final, pino_temporario);
}
}
Valew!