Por favor me ajudem!!! Estou encalhado neste exercíco (Questão 6.37) de recursividade do livro Java Como Programar 4º Edição. Se alguém conseguir fazer postem o código por favor!!! Sou iniciante neste estudo de recursividade!!!
A questão é a seguinte:
(6.37) Todo novo cientista de computação deve lidar com certos problemas clássicos,e as Torres de Hanói é dos mais famosos desses problemas. Diz a lenda que, em um templo no Oriente, os sacerdotes estavam tentando mover uma pilha de discos de um pino para o outro. A pilha inicial tinha 64 discos sobrepostos em um pino e ordenados de baixo para cima por tamanho decrescente. Os sacerdotes tentavam mover a pilha desse para um segundo pino com as restrições de que apenas um disco podia ser movido por vez e em nenhum momento um disco maior podia ser colocado sobre um disco menor. Havia um terceiro pino disponível para
conter os discos temporariamente. Supostamente, o mundo acabaria quando os sacerdotes completassem a tarefa, portanto havia pouco incentivo para nós facilitarmos os esforços.
Vamos supor que os sacerdotes estivessem tentando mover os discos do pino1 para o pino3. Desejamos desenvolver um algoritmo que imprimirá a seqüência precisa de transferência de discos de um pino para outro.
Se abordássemos esse problema com métodos convencionais, rapidamente ficaríamos desesperados gerenciandoos discos. Em vez disso, se abordássemos o problema com a recursão em mente, ele
imediatamente se tornaria tratável. Mover n discos pode ser visualizado em termos de mover somente n-1 discos(e daí a recursão)como segue:
a)Mover n-1 discos do pino1 para o pino2, utilizando o pino3 como área de armazenamento
temporário.
b)Mover o último disco(O maior) do pino1 para o pino3.
c)Mover os n-1 discos do pino2 para o pino3, utilizando o pino1 como área de armazenamento
temporário.
O processo termina quando a última tarefa envolver mover n=1 disco(isto é, o caso básico). Essa tarefa é realizada movendo-se o disco diretamente sem a necessidade de uma área de armazenamento temporário.
Escreva um applet para resolver o problema das Torres de Hanói. Permita que o usuário digite o número de discos em JTextField. Utilize um método recursivo “tower” com 4 parâmetros:
a)O número de discos a serem movidos;
b)O pino em que esses discos inicialmente estão empilhados;
c)O pino para o qual essa pilha de discos deve ser movida;
d)O pino a ser utilizado como área de armazenamento temporário.
O programa deve exibir em uma JTextArea com funcionalidade de rolagem as instruções exatas necessárias para mover os discos do pino inicial para o pino de destino. Por exemplo, mover uma pilha de três discos do pino1 para o pino3, o programa deve imprimir a seguinte série
de movimentos:
1->3(significa mover um disco do pino1 para o pino3.)
1->2
3->2
1->3
2->1
2->3
1->3