algoritmo recursivo
TRANSCRIPT
![Page 1: Algoritmo recursivo](https://reader035.vdocuments.site/reader035/viewer/2022081520/589dac831a28ab21728b586b/html5/thumbnails/1.jpg)
Algoritmo Recursivo
Professor: Daniel LobãoEstagiário: Carlos Rodrigo
![Page 2: Algoritmo recursivo](https://reader035.vdocuments.site/reader035/viewer/2022081520/589dac831a28ab21728b586b/html5/thumbnails/2.jpg)
Roteiro
Retomar conteúdo anterior;Conceito de Recursão;Objetivos da Função Recursiva;Ligação com a Matemática;Algoritmo Recursivo;Como fazer um Algoritmo Recursivo;
![Page 3: Algoritmo recursivo](https://reader035.vdocuments.site/reader035/viewer/2022081520/589dac831a28ab21728b586b/html5/thumbnails/3.jpg)
Função e Procedimentofuncao <nome-de-função> [(<seqüência-de-declarações-de-parâmetros>)]: <tipo-de-dado>// Seção de Declarações Internasinicio//precisa de um retorno// Seção de Comandosfimfuncao
![Page 4: Algoritmo recursivo](https://reader035.vdocuments.site/reader035/viewer/2022081520/589dac831a28ab21728b586b/html5/thumbnails/4.jpg)
Função e Procedimentoprocedimento <nome-de-procedimento> [(<seqüência-de-declarações-de-parâmetros>)]// Seção de Declarações Internasinicio// Seção de Comandosfimprocedimento
![Page 5: Algoritmo recursivo](https://reader035.vdocuments.site/reader035/viewer/2022081520/589dac831a28ab21728b586b/html5/thumbnails/5.jpg)
O que é Recursão?É um método de programação no qual
uma função pode chamar a si mesma. O termo é usado de maneira mais geral para descrever o processo de repetição de um objeto de um jeito similar ao que já fora mostrado.
![Page 6: Algoritmo recursivo](https://reader035.vdocuments.site/reader035/viewer/2022081520/589dac831a28ab21728b586b/html5/thumbnails/6.jpg)
Definição pelo dicionário
RECURSIVIDADE Qualidade do que é recursivo.
RECURSIVO Relativo a recursividade.
![Page 7: Algoritmo recursivo](https://reader035.vdocuments.site/reader035/viewer/2022081520/589dac831a28ab21728b586b/html5/thumbnails/7.jpg)
Objetivos da Função Recursiva
Ter uma condição de Parada;Tornar o problema mais
Simples;
![Page 8: Algoritmo recursivo](https://reader035.vdocuments.site/reader035/viewer/2022081520/589dac831a28ab21728b586b/html5/thumbnails/8.jpg)
Caso não tenha esses Objetivos?Sem condição de Parada
Com Procedimento
enquanto (VERDADEIRO) faca escreval("INFINITO")fimenquanto
procedimento escrever(quantidade:inteiro; texto:caractere)varinicioescreval(texto) escrever(quantidade - 1, texto)fimprocedimento
![Page 9: Algoritmo recursivo](https://reader035.vdocuments.site/reader035/viewer/2022081520/589dac831a28ab21728b586b/html5/thumbnails/9.jpg)
Solução
algoritmo “teste"
procedimento escrever(quantidade:inteiro; texto:caractere)variniciose (quantidade <> 0) entao escreval(texto) escrever(quantidade - 1, texto)fimsefimprocedimento
Var
Inicio
// Seção de Comandos
escrever(5, "Olá")Fimalgoritmo
![Page 10: Algoritmo recursivo](https://reader035.vdocuments.site/reader035/viewer/2022081520/589dac831a28ab21728b586b/html5/thumbnails/10.jpg)
FatorialRepresentação n!; n pertence ao conj. dos
naturais;n=0 0!=1;n=5 5! = 5 x 4 x 3 x 2 x 1 =
120;
![Page 11: Algoritmo recursivo](https://reader035.vdocuments.site/reader035/viewer/2022081520/589dac831a28ab21728b586b/html5/thumbnails/11.jpg)
Fatorial
https://olamundo0.files.wordpress.com/2010/04/fatorial.jpg
![Page 12: Algoritmo recursivo](https://reader035.vdocuments.site/reader035/viewer/2022081520/589dac831a28ab21728b586b/html5/thumbnails/12.jpg)
No VisualG como seria a Função?funcao fat (n:Inteiro):Inteiro
var i, resultado : inteiroinicio resultado <- 1 para i de n ate 1 passo -1 faca resultado <- resultado * i fimpara retorne resultadofimfuncao
![Page 13: Algoritmo recursivo](https://reader035.vdocuments.site/reader035/viewer/2022081520/589dac831a28ab21728b586b/html5/thumbnails/13.jpg)
No VisualG: Fatorial Recursivo
funcao fat (n:Inteiro):Inteiroinicio se n=0 entao retorne 1 senao retorne n * fat (n-1) fimsefimfuncao
Inicio
escreva("Digite um número: ") leia (numero) escreval("O fatorial de ", numero, " é ", fat(numero))
fimalgoritmo
![Page 14: Algoritmo recursivo](https://reader035.vdocuments.site/reader035/viewer/2022081520/589dac831a28ab21728b586b/html5/thumbnails/14.jpg)
Atividade Prática
Criar um algoritmo recursivo que digite um numero e faça a soma dos números anteriores.
![Page 15: Algoritmo recursivo](https://reader035.vdocuments.site/reader035/viewer/2022081520/589dac831a28ab21728b586b/html5/thumbnails/15.jpg)
Resposta sem Recursividadevarn, cont, soma, i: inteiroinicioescreval("Informe um número inteiro:") leia(n)se n <= 0 entaorepita
senaocont <- 0soma <- 0
para i de 1 ate n faca
soma <- soma + cont cont <- cont + 1
fimpara
fimse
escreval ("Soma:", soma)
![Page 16: Algoritmo recursivo](https://reader035.vdocuments.site/reader035/viewer/2022081520/589dac831a28ab21728b586b/html5/thumbnails/16.jpg)
Somatório Recursivofuncao somatorio (n:Inteiro):Inteiroinicio se n=1 entao retorne 1 senao retorne n + somatorio (n-1) fimsefimfuncao
Inicio escreva("Digite um número: ") leia (numero) escreval("O Somatório de ", numero, " é ", somatorio(numero))
fimalgoritmo
![Page 17: Algoritmo recursivo](https://reader035.vdocuments.site/reader035/viewer/2022081520/589dac831a28ab21728b586b/html5/thumbnails/17.jpg)
Algoritmos Recursivos x IterativosTodo algoritmo recursivo
possui um algoritmo iterativo;
QUASE...
![Page 18: Algoritmo recursivo](https://reader035.vdocuments.site/reader035/viewer/2022081520/589dac831a28ab21728b586b/html5/thumbnails/18.jpg)
Vantagens Simplifica a solução de alguns
problemasRecursividades são mais compactas
para alguns tipos de algoritmo, mais legíveis e mais fáceis de ser compreendidas e implementadas.
![Page 19: Algoritmo recursivo](https://reader035.vdocuments.site/reader035/viewer/2022081520/589dac831a28ab21728b586b/html5/thumbnails/19.jpg)
DesvantagensPor usarem intensivamente a memória ou poder de
processamento, os algoritmos recursivos tendem a ser mais lentos e a consumir mais memória que os iterativos, porém pode valer a pena sacrificar a eficiência em benefício da clareza.
Erros de implementação podem levar a estouro de pilha. Isto é, caso não seja indicada uma condição de parada, ou se esta condição nunca for satisfeita, entre outros.
![Page 21: Algoritmo recursivo](https://reader035.vdocuments.site/reader035/viewer/2022081520/589dac831a28ab21728b586b/html5/thumbnails/21.jpg)
Fibonaccifuncao Iterativo(n : inteiro) : inteirovarfib, n1, n2, indice: inteiroiniciose (n = 0) ou (n = 1) entao retorne nsenao n1 <- 0 n2 <- 1
para indice de 2 ate n passo 1 faca fib <- n2+n1 n1 <- n2 n2 <- fib fimpara retorne fibfimsefimfuncao
![Page 22: Algoritmo recursivo](https://reader035.vdocuments.site/reader035/viewer/2022081520/589dac831a28ab21728b586b/html5/thumbnails/22.jpg)
Fibonaccifuncao Recursivo(n : inteiro) : inteirovariniciocontadorRecursivo <- contadorRecursivo + 1se (n = 1) ou (n = 0) entao retorne n
senao retorne (Recursivo(n - 2) + Recursivo(n - 1))fimsefimfuncao
![Page 23: Algoritmo recursivo](https://reader035.vdocuments.site/reader035/viewer/2022081520/589dac831a28ab21728b586b/html5/thumbnails/23.jpg)
Fibonaccifuncao RecursivoMemorizado(n : inteiro) : inteirovariniciocontadorRecursivoMemorizado <- contadorRecursivoMemorizado + 1se (n = 0) ou (n = 1) ou (memorizado[n] <> 0) entao retorne memorizado[n]
senao memorizado[n] <- (RecursivoMemorizado(n - 2) + RecursivoMemorizado(n - 1)) retorne memorizado[n]fimsefimfuncao
![Page 24: Algoritmo recursivo](https://reader035.vdocuments.site/reader035/viewer/2022081520/589dac831a28ab21728b586b/html5/thumbnails/24.jpg)
Referências
MEDINA, Marco; FERTIG, Cristina. Algoritmos e Programação - Teoria e Prática. 2ª Edição. Editora Novatec, 2006.
MAGALHÃES, Regis Pires. Lógica Algoritmo - Recursividade. 2009. Disponível em: <http://pt.slideshare.net/regispires/logica-algoritmo-08-recursividade-presentation>. Acesso em: 06 mar. 2015.
RECURSIVIDADE. Disponível em: <http://www.di.ufpe.br/~if096/recursao/sld001.htm>. Acesso em: 06 mar. 2015.