Problema:

Elabore um programa em Java capaz de solucionar o desafio da Torre de Hanoi para uma quantidade qualquer de discos informados pelo usuário.

 

 Objetivo:

 Desenvolver o raciocínio lógico dos alunos e fixar os conteúdos apresentados anteriormente.

 

/**
* Curso de Programação JAVA
*
* Exercício 19 – Torre de Hanoi
*
* @author         Prof. Eric Loque M. Xavier
* @version        1.0.0
* Data            05/01/2017
*
*/

import java.util.*;

public class exercicio19 {
   public static void main (String[] args){

      Scanner ler = new Scanner(System.in);
      System.out.println("Digite o número de discos");

      //Informe o número de discos
      int nDiscos = ler.nextInt();

      torreHanoi(nDiscos, 'A', 'B', 'C');
   }    

   /* Método para resolução da Torre de Hanoi
    * Número de discos, pino A, pino B e pino C
    */

   public static void torreHanoi(int nDisco,
                       char inicio, char meio, char fim) {
      if (nDisco == 1)
        System.out.println("Disk 1 from "   +
                            inicio + " to " + fim);
      else
      {
         torreHanoi(nDisco - 1, inicio, fim, meio);

         System.out.println("Disk " + nDisco  +
                            " from " + inicio +
                            " to " + fim);

         torreHanoi(nDisco - 1, meio, inicio, fim);
      }
   }
}