Diagrama explicativo de Recursividade

Slides:



Advertisements
Apresentações semelhantes
Estruturação de Linguagens (Pascal e C++)
Advertisements

Linguagem PASCAL Subprogramas
SISTEMAS OPERACIONAIS (SO) Aula 5 Luciana A. F. Martimiano 2002
Resolução por algoritmos de Busca
Programas e Microprogramas
INTRODUÇÃO – LOGICA E ALGORITMOS
Pesquisa de Informação
Estrutura de Dados I Profº.: ABC Sampaio
Adaptado de material da profa. Maria Aparecida Livi
Monitores.
Algoritmos e Programação Estruturada Conceitos básicos
Recursividade Conceitos e Aplicações.
Universidade Federal do Espírito Santo
Algoritmos com seleção
Algoritmos e Estruturas de Dados II
O Portal do Estudante de Computação
O Portal do Estudante de Computação
O Portal do Estudante de Computação
GAUSS COM PIVOTEAMENTO
O Portal do Estudante de Computação
Paradigmas de programação
João Lucas de Oliveira Torres
Ponteiros em Pascal Variáveis ponteiros são aquelas que guardam o endereço de outra, possibilitando o acesso a seu conteúdo. Declaração em Pascal:  var.
Variáveis, Tipos de Dados e Constantes
Estruturas de Controlo em Pascal
O Portal do Estudante de Computação
FATORAÇÃO LU.
História da Torre de Hanoi
MÉTODO JACOBI.
Sub-programas. Mecanismo de composição de programas Sub-programa está para peça de LEGO assim como um programa está para a construção.
PROGRESSÕES GEOMÉTRICAS
INTRODUÇÃO – LOGICA E ALGORITMOS
Estrutura de Dados Unidade 16 Simulação da função Fatorial utilizando recursão – 16.1 Prof. Dr. Roberto Ferrari Jr.
Introdução a Programação COM 100 Aula 07 Procedimentos.
Listas duplamente encadeadas Estrutura: tDado = integer; { ou real, char, etc.} tPtNo = ^tNo; tNo = record Ant: tPtNo Dado: tDado; Prox: tPtNo; end; var.
Ponteiros em Pascal Variáveis ponteiros são aquelas que guardam o endereço de outra, possibilitando o acesso a seu conteúdo. Declaração em Pascal:  var.
Introdução ao uso de vatores na linguagem PASCAL.
O Portal do Estudante de Computação
Programação e Estrutura de Dados
Recursão.
Computação Eletrônica Subprograma. Função O que este programa faz? Program funcao; var n,x: real; begin write('Entre n: '); readln(n); x := cos(n); write(x);
Capítulo III Modularização Procedimentos e Funções Universidade Federal de São Carlos Departamento de Computação Aluna: Luanna Lopes Lobato
Linguagem Pascal Prof. Sérgio Rodrigues.
Matemática I AULA 1 Profª Karine R. de Souza ..
Recursão Uma função é dita recursiva quando dentro do seu código existe uma chamada para si mesma Exemplo Cálculo do fatorial de um número:
LEMA 1 Utilização de material concreto no Ensino de Matemática
SISTEMAS OPERACIONAIS I Gerenciamento de Arquivos
BCC 101 – Matemática Discreta I
“Introdução a Computação” Capítulo II Estruturas de Dados
VARIÁVEIS COMPOSTAS HOMOGÊNEAS UNIDIMENSIONAIS (VETORES)
Torre de  Hanói.
Programação de computadores Prof. Giovanni Castro.
Computação Eletrônica
Comando CASE Desvio por seleção múltipla
TORRE DE HANÓI Existem várias lendas a respeito da origem do jogo, a mais conhecida diz respeito a um templo cosmopolita holandês, situado no centro do.
Técnicas de Programação I
DSC/CCT/UFCG {joseana, Informática na Educação Profs.: Joseana Macêdo Fechine José Eustáquio Rangel de Queiroz {joseana,
Introdução à Programação
Elaine Teixeira de Oliveira
Algoritmo e Estrutura de Dados I
MODULARIZAÇÃO Existem dois tipos de sub-programas –Procedures (procedimentos).Não retorna valores –Functions (funçöes). Retorna valores.
MODULARIZAÇÃO Técnica utilizada e tida como vantajosa na confecção de programas. Consiste em dividir o programa em diversos módulos ou sub-programas, de.
A Torre de Hanói.
Métodos de Ordenação Externa
Computadores vs. Programas / Algoritmos Computadores vs. Programas -> Algoritmos O tratamento de problemas através do computador geralmente envolve uma.
PROGRESSÕES GEOMÉTRICAS Falamos de Progressões Aritméticas onde, após o 1ºtermo (a 1 ), todos os termos são obtidos somando-se a razão (r). Uma “Progressão.
Computação Eletrônica Variáveis Inteiras. A memória A memória pode ser vista como um imenso gaveteiro Em cada gaveta, guardamos uma informação. Por exemplo,
Introdução à Lógica Matemática
SUB-ROTINAS EM PASCAL PROGRAMAÇÃO MODULARIZADA 252.
Transcrição da apresentação:

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

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

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.

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.

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)