Exemplos de recursividade no mundo

Slides:



Advertisements
Apresentações semelhantes
Aquiles Burlamaqui AULA 09
Advertisements

Técnicas de Programação II Revisão TP1 Parte2
Fractais.
Fractais.
Programação em Java Prof. Maurício Braga
Complexidade de Algoritmos Recursivos
Recursividade Inhaúma Neves Ferraz
Marco Antonio Montebello Júnior
Estratégias de Particionamento e Divisão e Conquista
Recursividade Prof. Rosana Palazon.
Estrutura Condicional
TADS – Tipos Abstratos de Dados
TADS – Tipos Abstratos de Dados
Alocação Dinâmida de Memória
Listas duplamente encadeadas
Engenharia de Computação.
Recursividade Prof. Alex F. V. Machado
PROCEDIMENTOS COM RECURSIVIDADE
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
Automato de Pilha.
Fundamentos de Computação Gráfica
Recursividade Conceitos e Aplicações.
Curso Sistemas de Informação Disciplina: Arquitetura de Software
RECURSIVIDADE Análise de algoritmos UNISUL Ciência da Computação
DESENVOLVIMENTO DE COMÉRCIO ELETRÔNICO
APRESENTAÇÃO: DAVID ANDERSON CARDOSO DANTAS CURSO DE C AULA 04: Funções Maceió, Maio de 2010.
Introdução a Computação e Cálculo Numérico
Introdução à Programação
Prof. Natalia Castro Fernandes Mestrado em Telecomunicações – UFF 2º semestre/2012.
TRABALHO MATEMÁTICA DISCRETA
Estrutura de Dados Unidade 16 Simulação da função Fatorial utilizando recursão – 16.1 Prof. Dr. Roberto Ferrari Jr.
INTELIGÊNCIA ARTIFICIAL
Algoritmos Recursivos Klauko Mota. Conceito de Recursividade Um programa recursivo é um programa que chama a si mesmo, direta ou indiretamente Conceito.
Recursividade Programação II.
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.
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014
Algoritmos e Estruturas de Dados I – Recursão
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:
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.
UTFPR – Campus Curitiba - DAELN Cursos de Eng. Eletrônica/Eng
Aula Prática 5 05/05/2010. //Estrutura do método public int subtrair (int a, int b){ //Calcule a operação desejada. int resultado = a – b; //Retorne o.
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013
Recursividade Bruno Silva.
Externato Infante D. Henrique Matemática 5º Ano Autor: Prof. Carlos Magalhães Costa.
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,
INE Fundamentos de Matemática Discreta para a Computação
Algoritmos e Programação MC102
CÁLCULO COM GEOMETRIA ANALÍTICA II Funções de várias variáveis
Dimensão Fractal Definição de dimensão de um corpo Fractais
Ciência da Computação 1 PROGRAMAÇÃO ESTRUTURADA II Profª. Noeli.
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.
Professor Luiz José Hoffmann Filho
PCI- Funções e Procedimentos Profa. Mercedes Gonzales Márquez.
INTEGRAL DEFINIDA APLICAÇÕES
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.
Fundamentos de Programação 1 Aula N. 02 Prof. SIMÃO Jean Marcelo SIMÃO Linguagem C “Laços de Repetição em C”
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
INF1007: Programação Funções Recursivas
Fundamentos de Programação1
Exemplo de derivada por definição
Prof. Jesus Monteiro 2015.
Transcrição da apresentação:

Exemplos de recursividade no mundo Imagem recursiva: “o efeito Droste” Definição recursiva de escada Acrônimo recursivo para definir GNU, PHP Refeição recursiva Definição do conjunto dos números naturais Como saber o que é recursão?

Exemplos de recursividade (2) Triângulo de Sierpinski:

Exemplos de recursividade (3) Fractais: Curva de Koch

Recursividade em Programação Um procedimento é dito recursivo quando um de seus passos consiste na chamada de uma nova execução do mesmo procedimento. O procedimento recursivo é expresso como um conjunto de comandos formados por: um grupo de comandos não recursivos, normalmente determinam a parada da recursão, e um grupos de comandos recursivos, que chamam o próprio procedimento.

Exemplos de programas recursivos fatorial (6) 6 * fatorial (5) 6 * 5 * fatorial (4) 6 * 5 * 4 * fatorial (3) 6 * 5 * 4 * 3 * fatorial (2) 6 * 5 * 4 * 3 * 2 * fatorial (1) 6 * 5 * 4 * 3 * 2 * 1 * 1 6 * 5 * 4 * 3 * 2 * 1 6 * 5 * 4 * 3 * 2 6 * 5 * 4 * 6 6 * 5 * 24 6 * 120 720 Cálculo do fatorial de n: int fatorial(int n) { if(n <= 1) return 1; else return n * fatorial(n-1); }

Exemplos de programas recursivos (2) Busca binária (veja a solução da 1ª questão da prova – disponível no site) Análise de complexidade do algoritmo: log2n = k, ou seja a complexidade é de ordem: O(log n) Qtde de elementos (n) Qtde de comparações (k+1) 1 2 3 4 8 16 5 32 6 64 7

Vantagens e desvantagens de programas recursivos Um programa recursivo é mais elegante e menor que a sua versão iterativa, além de exibir com maior clareza o processo utilizado, desde que o problema ou dados sejam naturalmente definidos através da recorrência. Por outro lado, um programa recursivo exige mais espaço de memória e é mais lento do que a versão iterativa. Alguns problemas tem a sua solução naturalmente feitas de forma recursiva: percurso de uma árvore, exemplo lúdico http://www.youtube.com/watch?v=FVkZzdZxEks&feature=related para descobrir a qtde de elementos; busca de informações em estruturas hierárquicas; algoritmos de ordenação como Quicksort.

Vantagens e desvantagens de programas recursivos (2) Enquanto em alguns casos a solução recursiva é bem vinda, em outros casos é até impraticável, como na série de Fibonacci, pois existe uma dupla chamada da recursão exigindo que o processamento seja refeito várias vezes: long fibonacci(long n) { if(n <= 1) return n; else return fibonacci(n-2)+fibonacci(n-1); }

Vantagens e desvantagens de programas recursivos (3) Execute e veja o tempo de cada uma das versões! http://pastebin.com/6aLfbipk Versão iterativa: long fibonacci(long n) { int i, primeiro = 0, segundo = 1, terceiro; if(n <= 0) return 0; if(n == 1) return 1; for(i = 2; i <= n; i++) { terceiro = primeiro + segundo; primeiro = segundo; segundo = terceiro; } return terceiro;

documento cooperativo Exercícios no documento cooperativo disponível no site