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

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

Eng. de Computação – Estruturas de Dados I – Recursividade prof. Henrique Monteiro Cristovão 1 Exemplos de recursividade no mundo Imagem recursiva: o efeito.

Apresentações semelhantes


Apresentação em tema: "Eng. de Computação – Estruturas de Dados I – Recursividade prof. Henrique Monteiro Cristovão 1 Exemplos de recursividade no mundo Imagem recursiva: o efeito."— Transcrição da apresentação:

1 Eng. de Computação – Estruturas de Dados I – Recursividade prof. Henrique Monteiro Cristovão 1 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?

2 Eng. de Computação – Estruturas de Dados I – Recursividade prof. Henrique Monteiro Cristovão 2 Exemplos de recursividade (2) Triângulo de Sierpinski:

3 Eng. de Computação – Estruturas de Dados I – Recursividade prof. Henrique Monteiro Cristovão 3 Exemplos de recursividade (3) Fractais: Curva de Koch

4 Eng. de Computação – Estruturas de Dados I – Recursividade prof. Henrique Monteiro Cristovão 4 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.

5 Eng. de Computação – Estruturas de Dados I – Recursividade prof. Henrique Monteiro Cristovão 5 Exemplos de programas recursivos Cálculo do fatorial de n: int fatorial(int n) { if(n <= 1) return 1; else return n * fatorial(n-1); } 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 *

6 Eng. de Computação – Estruturas de Dados I – Recursividade prof. Henrique Monteiro Cristovão 6 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: log 2 n = k, ou seja a complexidade é de ordem: O(log n) Qtde de elementos (n) Qtde de comparações (k+1)

7 Eng. de Computação – Estruturas de Dados I – Recursividade prof. Henrique Monteiro Cristovão 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 e=related para descobrir a qtde de elementos; e=related – busca de informações em estruturas hierárquicas; – algoritmos de ordenação como Quicksort.

8 Eng. de Computação – Estruturas de Dados I – Recursividade prof. Henrique Monteiro Cristovão 8 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); }

9 Eng. de Computação – Estruturas de Dados I – Recursividade prof. Henrique Monteiro Cristovão 9 Vantagens e desvantagens de programas recursivos (3) Execute e veja o tempo de cada uma das versões! 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; }

10 Eng. de Computação – Estruturas de Dados I – Recursividade prof. Henrique Monteiro Cristovão 10 Exercícios no documento cooperativo disponível no site


Carregar ppt "Eng. de Computação – Estruturas de Dados I – Recursividade prof. Henrique Monteiro Cristovão 1 Exemplos de recursividade no mundo Imagem recursiva: o efeito."

Apresentações semelhantes


Anúncios Google