Marco Antonio Montebello Júnior

Slides:



Advertisements
Apresentações semelhantes
Aquiles Burlamaqui AULA 09
Advertisements

Python: Recursão Claudio Esperança.
Programação em Java Prof. Maurício Braga
Recursividade Inhaúma Neves Ferraz
gerador de código intermediário
Marco Antonio Montebello Júnior
Marco Antonio Montebello Júnior
Marco Antonio Montebello Júnior
Marco Antonio Montebello Júnior
Marco Antonio Montebello Júnior
Listas Lineares Estrutura que permite representar um conjunto de dados de forma a preservar a relação de ordem linear. Uma lista linear é composta de nós,
Solved Exercises 1. Finding the Peak. Let A= a1,…,an be a sequence of n numbers with the following property: there is p in {1,…,n} for which (i) the.
Recursividade Prof. Rosana Palazon.
Funções, Execução Condicional, Recursividade e Iteração
Recursividade e Iteração Factorial, Fibonacci e Maior Divisor Comum
Introdução aos Computadores e à Programação
Introdução a Algoritmos Seqüenciais
Recursividade Prof. Alex F. V. Machado
1 Complexidade de Algoritmos Complexidade de pior caso Complexidade de melhor caso de uso bem menos freqüente em algumas situações específicas Complexidade.
Árvores.
Recursividade Inhaúma Neves Ferraz
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
BCC101 – Matemática Discreta
Automato de Pilha.
Recursividade Conceitos e Aplicações.
AED – Algoritmos e Estruturas de Dados
Recursividade Estrutura de Dados.
Linguagem C Funções.
Programação Dinámica Análise de algoritmos UNISUL
Introdução à Programação
Prof. Natalia Castro Fernandes Mestrado em Telecomunicações – UFF 2º semestre/2012.
INTELIGÊNCIA ARTIFICIAL
Algoritmos Recursivos Klauko Mota. Conceito de Recursividade Um programa recursivo é um programa que chama a si mesmo, direta ou indiretamente Conceito.
Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação
UNIDADE 6 - complemento Funções recursivas
Aula 03 – BCC202 Análise de Algoritmos (Parte 1) Túlio Toffolo www
Algoritmos 1º Semestre Materia: Informática Profº: Cristiano.
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Recursão.
Linguagem e Ambiente Scratch
Algoritmos e Estruturas de Dados I – Recursão
Estruturas de Dados Aula 14: Recursão 04/06/2014.
Algoritmos e Estruturas de Dados I – Recursão
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:
Sistemas Operacionais
Oficinas de Desenvolvimento de Software
Universidade do Vale do Rio dos Sinos - São Leopoldo -
Algoritmos - Profa. Alciléia1 Profa. Maria Alciléia Alves Rocha Funções em C 2011.
BCC 101 – Matemática Discreta I
RESOLUÇÃO DE PROBLEMAS E CRIATIVIDADE Metodologia de resolução de problemas como uma atividade de investigação Antonio Carlos Brolezzi  
Algoritmos e Estruturas de Dados RECURSIVIDADE. O que é recursividade? Recursividade significa algo ser definido em termos de sí próprio. Em termos de.
Lógica para Computação Prof. Celso Antônio Alves Kaestner, Dr. Eng. celsokaestner (at) utfpr (dot) edu (dot) br.
Estruturas de Dados Aula 15: Árvores
Recursividade Bruno Silva.
Construtores e Destrutores
Recursividade Profs. De Prog2 e Lab2.
INE Fundamentos de Matemática Discreta para a Computação
CES-10 INTRODUÇÃO À COMPUTAÇÃO
Algoritmos e Programação MC102
Analise de Algoritmos e Notação Assintótica
Prof. Alessandro Gonçalves
Elaine Teixeira de Oliveira
Recursividade Aula I – ALG II CPAN – UFMS. Recursividade A recursão é uma técnica pela qual uma rotina estruturada faz chamadas a ela mesma, com o objetivo.
Algoritmo e Estrutura de Dados I
Professor Luiz José Hoffmann Filho
USP – ICMC – SSC SSC0300 2º Semestre 2015 Disciplina de Linguagem de Programação e Aplicações [ Eng. Elétrica / Eletrônica ] 1 Prof. Dr. Daniel Rodrigo.
PRE 1002 Éverlin Marques 2015/1.
Aula Prática 5 Recursão Monitoria  Na linguagem C, como em muitas outras linguagens, uma função pode chamar a si própria.  Uma função assim.
Recursividade e análise Cristiano Arbex Valle Vinicius Fernandes dos Santos
Transcrição da apresentação:

Marco Antonio Montebello Júnior marco.antonio@aes.edu.br Recursividade Estrutura de Dados Marco Antonio Montebello Júnior marco.antonio@aes.edu.br

Recursividade Divisão do problema original em pequenas ocorrências Dividir para conquistar (divide and conquer) A dificuldade não está só no reconhecimento das situações Mas também no equilíbrio entre espaço (memória ocupada) e tempo (tempo de execução) E manter ao mesmo tempo uma boa compreensão da solução do problema Estrutura de Dados

Definição Um algoritmo é dito recursivo quando ele chama a si mesmo ou chama uma seqüência de outros algoritmos, e um deles chama novamente o primeiro algoritmo. Estrutura de Dados

A função fatorial n! = n x (n-1) x . . .x 1 Uma definição mais precisa Calculando 4 ! usando a última definição, faríamos: 4! = 4 x 3! = 4 x (3 x 2!) = 4 x (3 x (2 x 1)) = 4 x (3 x (2 x (1 x 0!))). = 4 x (3 x (2 x (1 x 1))) = 4 x (3 x 2) = 4 x 6 = 24 Estrutura de Dados

Todo processo recursivo consiste de duas partes Solução trivial: Dada por definição, obtida sem recursão. Solução geral: Parte do problema que em essência é igual ao problema original, sendo porém menor. Estrutura de Dados

Versão recursiva para calcular o fatorial /* fatorial : versão recursiva Pré-condição : n é um inteiro não negativo Pós-condição : retorna o valor do fatorial de n */ int fatorial(int n) { if(n == 0) return 1; else return n*fatorial(n-1); } Estrutura de Dados

Chamando a função: fatorial(3) Estrutura de Dados

Utilizando árvore de recursão float ex(float a, float b) { if (a >= b) return((a+b)/2); else return(ex(ex(a+2,b-1),ex(a+1, b-2))); } Estrutura de Dados

Utilizando árvore de recursão Estrutura de Dados

Rotinas recursivas e pilhas Controle de chamadas e retornos de rotinas com pilha Quando uma rotina é chamada, empilha-se o endereço de retorno + todas as variáveis locais Quando ocorre o retorno da rotina, as variáveis locais que foram criadas deixam de existir Estrutura de Dados

Observações sobre um algoritmo recursivo Pode ser conciso e elegante Pode ser difícil a compreensão dos detalhes de seu funcionamento computacional Pode requerer um exaustivo acompanhamento do programa O computador pode utilizar pilhas para esse controle A mente humana não é tão boa para tais tarefas Parece ser difícil para uma pessoa guardar uma longa seqüência de resultados e então voltar para terminar um trabalho Estrutura de Dados

Para facilitar o acompanhamento, podemos utilizar Ilustrações especiais Árvores de Recursão Estrutura de Dados

Mais um exemplo MDC (máximo divisor comum) int mdc(int p1, int p2) { if(p2 == 0) mdc = p1; else mdc = mdc(p2, p1%p2); } Estrutura de Dados

Alguns resultados mdc (6,12) = 6 mdc (12,20) = 4 mdc (20,24) = 4 Estrutura de Dados

Rima infantil norte-americana As I was going to St. Ives, I met a man with seven wives. Each wife had seven sacks, Each sack had seven cats, Each cat had seven kits, Kits, cats, sacks and wives, How many were there going to St. Ives? Estrutura de Dados

Torres de Hanoi “No século XIX, um jogo chamado Torres de Hanoi apareceu na Europa, junto com um material promocional explicando que o jogo representava uma tarefa conduzida no Templo de Brahma (montanhas de Hanoi – sacerdotes brâmanes). Dizia, ainda, que na criação do mundo, aos sacerdotes foi dada uma plataforma de metal na qual existiam três hastes de diamante. Estrutura de Dados