Carregar apresentação
A apresentação está carregando. Por favor, espere
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
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.