Torre de hanoi

4 respostas
oxfish

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!

4 Respostas

oxfish

EUREKAAAAA!!!

Consegui, porém não to entendendo o q aquela intrução return está fazendo, alguém saberia???

Hammer

algoritmos recursivos sao bastante complicados de visualizar e entender

akele return ali vai servir qd o numero de discos for igual a 1e vai “mata” a funcao ali.

syagrio

Pelo oq eu entendi foi a mesma coisa que o amigo acima, quando o numero de discos for igual a 1 ele mata a função e sai fora.

Falow

oxfish

fazendo o teste de mesa ele entra no if onde está o return… mais de uma vez… agora não entendi mais nada…

Criado 29 de maio de 2007
Ultima resposta 29 de mai. de 2007
Respostas 4
Participantes 3