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

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

Exemplos de recursividade no mundo

Apresentações semelhantes


Apresentação em tema: "Exemplos de recursividade no mundo"— Transcrição da apresentaçã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 Exemplos de recursividade (2)
Triângulo de Sierpinski:

3 Exemplos de recursividade (3)
Fractais: Curva de Koch

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 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); }

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: 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

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 para descobrir a qtde de elementos; busca de informações em estruturas hierárquicas; algoritmos de ordenação como Quicksort.

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 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 documento cooperativo
Exercícios no documento cooperativo disponível no site


Carregar ppt "Exemplos de recursividade no mundo"

Apresentações semelhantes


Anúncios Google