A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Diagrama explicativo de Recursividade

Apresentações semelhantes


Apresentação em tema: "Diagrama explicativo de Recursividade"— Transcrição da apresentação:

1 Diagrama explicativo de Recursividade
Torre de Hanoi Por Jocimar Borges Abrantes Huss 2º Ciência da Computação – FAFIMAN 04/2006

2 A Torre de Hanói é um dos quebra-cabeças matemáticos mais populares
A Torre de Hanói é um dos quebra-cabeças matemáticos mais populares. Ele foi inventado por Edouard Lucas em 1883. A História No começo dos tempos, Deus criou a Torre de Brahma, que contém três pinos de diamante e colocou no primeiro pino 64 discos de ouro maciço. Deus então chamou seus sacerdotes e ordenou-lhes que transferissem todos os discos para o terceiro pino, seguindo as regras acima. Os sacerdotes então obedeceram e começaram o seu trabalho, dia e noite. Quando eles terminarem, a Torre de Brahma irá ruir e o mundo acabará. Origem Auxiliar Destino

3 Regras e objetivos do jogo Há um conjunto de 3 pinos: 1,2,3.
Origem Auxiliar Destino Peças As peças são n discos de tamanhos diferentes e todos com um furo em seu centro e três pinos onde são colocados os discos. Regras e objetivos do jogo Há um conjunto de 3 pinos: 1,2,3. Um deles tem discos de tamanhos diferentes, sendo que os maiores estãoo embaixo dos menores. Os outros dois pinos estão vazios. O objetivo é mover todos os discos do primeiro pino para o terceiro pino, podendo se usar o segundo como pino auxiliar. As regras para resolver o problema são: 1. Somente um disco pode ser movido de cada vez. 2. Nenhum disco pode ser colocado sobre um disco menor que ele. 3. Observando-se a regra 2, qualquer disco pode ser movido para qualquer pino.

4 Solução do problema em pascal
{Esse programa mostra a solução de uma torre de hanoi de acordo com o total de discos especificados} Program torre_hanoi; Uses crt; Procedure hanoi (n,origem,auxiliar,destino); Begin if n > 0 then begin hanoi(n-1,origem,auxiliar,destino); writeln(‘Mova de: ‘,Origem,’ para: ‘,destino); hanoi(n-1,auxiliar,origem,destino); end; clrscr; hanoi(3,1,2,3); readkey; End.

5 Procedure H (N,O,A,D :integer) { onde: N= Numero de discos; O=Pino Origem; A: Pino Auxiliar; D=Pino Destino } N=3 - O=1 - A=2 - D=3 N=2 - O=1 - A=3 - D=2 N=1 - O=1 - A=2 - D=3 N=0 - O=1 - A=3 - D=2 If n > 0 then H(n-1,O,D,A) Writeln(O,D) H(n-1,A,O,D) If n > 0 then H(n-1,O,D,A) Writeln(O,D) H(n-1,A,O,D) If n > 0 then H(n-1,O,D,A) Writeln(O,D) H(n-1,A,O,D) If n > 0 then H(n-1,O,D,A) Writeln(O,D) H(n-1,A,O,D) N=0 - O=2 - A=1 - D=3 N=1 - O=3 - A=1 - D=2 If n > 0 then H(n-1,O,D,A) Writeln(O,D) H(n-1,A,O,D) N=2 - O=2 - A=1 - D=3 If n > 0 then H(n-1,O,D,A) Writeln(O,D) H(n-1,A,O,D) If n > 0 then H(n-1,O,D,A) Writeln(O,D) H(n-1,A,O,D) N=1 - O=2 - A=3 - D=1 If n > 0 then H(n-1,O,D,A) Writeln(O,D) H(n-1,A,O,D) N=0 - O=3 - A=2 - D=1 N=0 - O=2 - A=1 - D=3 If n > 0 then H(n-1,O,D,A) Writeln(O,D) H(n-1,A,O,D) If n > 0 then H(n-1,O,D,A) W(O,D) H(n-1,A,O,D) N=1 - O=1 - A=2 - D=3 If n > 0 then H(n-1,O,D,A) Writeln(O,D) H(n-1,A,O,D) N=0 - O=1 - A=3 - D=2 If n > 0 then H(n-1,O,D,A) Writeln(O,D) H(n-1,A,O,D) N=0 - O=1 - A=3 - D=2 If n > 0 then H(n-1,O,D,A) Writeln(O,D) H(n-1,A,O,D) N=0 - O=3 - A=2 - D=1 If n > 0 then H(n-1,O,D,A) Writeln(O,D) H(n-1,A,O,D) N=0 - O=2 - A=1 - D=3 If n > 0 then H(n-1,O,D,A) Writeln(O,D) H(n-1,A,O,D)


Carregar ppt "Diagrama explicativo de Recursividade"

Apresentações semelhantes


Anúncios Google