Algoritmos Recursivos Klauko Mota. Conceito de Recursividade Um programa recursivo é um programa que chama a si mesmo, direta ou indiretamente Conceito.

Slides:



Advertisements
Apresentações semelhantes
Técnicas de Programação II Revisão TP1 Parte2
Advertisements

Aula T-09 – BCC202 Listas (Parte 1) Túlio Toffolo www. decom. ufop
Complexidade de Algoritmos Recursivos
Recursividade Inhaúma Neves Ferraz
O TAD fila O TAD fila armazena objetos arbitrários
Marco Antonio Montebello Júnior
Marco Antonio Montebello Júnior
Recursividade Função recursiva é aquela que chama a si própria.
V Procedimentos – são estruturas que agrupam um conjunto de comandos, que são executados quando o procedimento é chamado. v Funções – são procedimentos.
Recursividade Prof. Rosana Palazon.
Exemplos de recursividade no mundo
Recursividade Prof. Alex F. V. Machado
1 MergeSort Seja uma lista A de n elementos. O algoritmo consiste das seguintes fases Dividir A em 2 sub-listas de tamanho n/2 Conquistar: ordenar cada.
Recursividade Inhaúma Neves Ferraz
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
David Menotti Estruturas de Dados I DECOM – UFOP
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
Automato de Pilha.
Recursividade Conceitos e Aplicações.
Threads.
Optimização do Desempenho: Técnicas Independentes da Máquina Arquitectura de Computadores Lic. em Engenharia Informática Luís Paulo Santos.
Aula 11 Fábio Nakano.
Insertion Sort.
Aula prática 12 Listas Encadeadas
APRESENTAÇÃO: DAVID ANDERSON CARDOSO DANTAS CURSO DE C AULA 04: Funções Maceió, Maio de 2010.
Introdução à Programação
Aula prática 9 Alocação Dinâmica Monitoria de Introdução à Programação
Marco Antonio Montebello Júnior
Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação
UNIDADE 6 - complemento Funções recursivas
PROGRAMAÇÃO I UNIDADE 4.
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Recursão.
Aula 3 Vetores e Listas. Arrays (vetores) Array – sequência de elementos do mesmo tipo. Tamanho do Array – seu número de elementos (número fixo) Consequência:
Paradigmas de Projetos de Algoritmos
Orientação a Objetos e Java Graduação em Ciência da Computação
Algoritmos e Estruturas de Dados I – Recursão
Algoritmos e Estruturas de Dados I – Recursão
Estruturas de Dados Aula 2: Estruturas Estáticas 07/04/2014.
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:
Universidade do Vale do Rio dos Sinos - São Leopoldo -
Sistemas Operacionais
Capítulo VIII Ambientes de Execução
Algoritmos - Profa. Alciléia1 Profa. Maria Alciléia Alves Rocha Funções em C 2011.
Algoritmos e Estruturas de Dados RECURSIVIDADE. O que é recursividade? Recursividade significa algo ser definido em termos de sí próprio. Em termos de.
Regras de escopo Escopo: trecho de codificação no qual o identificador possui significado Escopo de função: identificador válido dentro do trecho de uma.
Recursividade Bruno Silva.
PCS - Departamento de Engenharia de Computação e Sistemas Digitais Projeto de Formatura – Turmas 2010 Integrantes: Professor Orientador: Co-orientador:
R ECURSIVIDADE LPII Professora Lucélia. M ÉTODO R ECURSIVO Um método é considerado recursivo quando possui uma chamada para si próprio. Segundo Deitel,
Capítulo 4: Processos.
Aula Prática 5 Monitoria IP/CC (~if669). Roteiro 1. 1.Recursão 2. 2.Escopo de Variáveis 3. 3.Arrays 4. 4.Strings.
Recursividade Profs. De Prog2 e Lab2.
INE Fundamentos de Matemática Discreta para a Computação
Otimização de Consultas em SQL Comparação: Joins em pipeline versus Joins materializados AULA 26 – Parte I Profa. Sandra de Amo GBC053 – BCC.
Engenharia de Sistemas Embarcados Aula 5: Um Conjunto Básico de Ferramentas.
Algoritmo e Estrutura de Dados I
Gerenciamento de Memória - Capítulo 7 - Sistemas Operacionais Prof. Dr. José Carlos Becceneri Luciana Sêda Cardoso.
Ciência da Computação 1 PROGRAMAÇÃO ESTRUTURADA II Profª. Noeli.
Linguagens de Programação
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
PROGRAMAÇÃO II – PARTE 1 Profa. Maria Augusta Constante Puget.
Professor: Leandro Chernicharo.  Uma coleção de dados relacionados;  Dados  Fatos conhecidos que podem ser gravados e têm um significado implícito.
Estruturas de Dados Murilo Salgado Razoli.
Professor Luiz José Hoffmann Filho
PCI- Funções e Procedimentos Profa. Mercedes Gonzales Márquez.
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.
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.
1Unidade 04 – Estruturas de Repetição Algoritmos e Linguagens de Programação Estruturas de Repetição Prof.: Guilherme Baião S. Silva
Recursividade e análise Cristiano Arbex Valle Vinicius Fernandes dos Santos
Transcrição da apresentação:

Algoritmos Recursivos Klauko Mota

Conceito de Recursividade Um programa recursivo é um programa que chama a si mesmo, direta ou indiretamente Conceito poderoso –Define conjuntos infinitos com comandos finitos Vantagens –Redução do tamanho do código fonte –Permite descrever algoritmos de forma mais clara e concisa Desvantagens –Redução do desempenho de execução devido ao tempo para gerenciamento de chamadas –Dificuldades na depuração de programas recursivos, especialmente se a recursão for muito profunda

Implementação da Recursividade Usa-se uma pilha para armazenar os dados usados em cada chamada de um procedimento / função que não terminou Todos os dados não globais são armazenados na pilha, informando o resultado corrente Quando uma ativação anterior prossegue, os dados da pilha são recuperados

Exemplo – Função Fatorial Definição de uma Função Fatorial a)Não Recursiva: –N! = 1, para N=0; –N! = 1 x 2 x 3 x... x N, para N>=1; b)Recursiva: –N! = 1, para N=0; –N! = N x (N – 1), para N>=1;

Implementação de Fatorial Recursivo X Não Recursivo int Fat (int n){ int result ; result :=1; for( i = 2; i <= n; i++) result = result * i; return result; } Implementação não Recursiva int Fat ( int n ){ if n = 0 then return 1; else return n * Fat (n-1); } Implementação Recursiva

Resultado da Implementação Fatorial = 3 * (Fatorial(2)) Fatorial = 4 * (Fatorial(3)) Fatorial = 2 * (Fatorial(1)) Fatorial = 1 * (Fatorial(0)) Fatorial = Fatorial = 2 2 Fatorial = 6 6 Fatorial = 24

Dicas Não se aprende recursividade sem praticar Para montar um algoritmo recursivo –Defina pelo menos um caso básico (condição de terminação); –Quebre o problema em problemas menores, definindo o(s) caso(s) com recursão(ões) –Fazer o teste de finitude, isto é, certificar-se de que as sucessivas chamadas recursivas levam obrigatoriamente, e numa quantidade finita de vezes, ao(s) caso(s) básico(s)

Finalizando Recursividade é um tópico fundamental Algoritmos recursivos aparecem bastante na prática Dividir e conquistar é uma técnica naturalmente recursiva para solução de problemas Mais recursividade no nosso futuro, principalmente na implementação de árvores...