Algoritmo recursivo

1,174 views 24 slides May 23, 2015
Slide 1
Slide 1 of 24
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24

About This Presentation

Aula sobre Algoritmo Recursivo


Slide Content

Algoritmo Recursivo Professor: Daniel Lobão Estagiário: Carlos Rodrigo

Roteiro Retomar conteúdo a nterior; Conceito de Recursão; O bjetivos da Função Recursiva; Ligação com a Matemática; Algoritmo Recursivo; Como fazer um Algoritmo Recursivo;

Função e Procedimento funcao   <nome-de-função>  [( < seqüência -de-declarações-de-parâmetros> )]:  <tipo-de-dado> // Seção de Declarações Internas inicio //precisa de um retorno // Seção de Comandos fimfuncao

Função e Procedimento procedimento <nome-de-procedimento> [(< seqüência -de-declarações-de-parâmetros>)] // Seção de Declarações Internas inicio // Seção de Comandos fimprocedimento

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.

Definição pelo dicionário RECURSIVIDADE Qualidade do que é recursivo . RECURSIVO  Relativo a recursividade.

Objetivos da Função Recursiva Ter uma condição de Parada; Tornar o problema mais Simples;

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 ) var inicio escreval (texto ) escrever(quantidade - 1, texto) fimprocedimento

Solução algoritmo “teste" procedimento escrever( quantidade:inteiro ; texto:caractere ) var inicio se (quantidade <> 0) entao escreval (texto) escrever(quantidade - 1, texto) fimse fimprocedimento Var Inicio // Seção de Comandos escrever(5, "Olá") Fimalgoritmo

Fatorial Representaçã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;

Fatorial https://olamundo0.files.wordpress.com/2010/04/fatorial.jpg

No VisualG como seria a Função? funcao fat ( n:Inteiro ):Inteiro var i, resultado : inteiro inicio resultado <- 1 para i de n ate 1 passo -1 faca resultado <- resultado * i fimpara retorne resultado fimfuncao

No VisualG : Fatorial Recursivo funcao fat ( n:Inteiro ):Inteiro inicio se n=0 entao retorne 1 senao retorne n * fat (n-1)‏ fimse fimfuncao Inicio escreva("Digite um número: ") ‏ leia (numero) ‏ escreval ("O fatorial de ", numero, " é ", fat (numero )) fimalgoritmo

Atividade Prática Criar um algoritmo recursivo que digite um numero e faça a soma dos números anteriores.

Resposta sem Recursividade var n, cont , soma, i: inteiro inicio escreval ("Informe um número inteiro:")   leia(n) se n <= 0 entao repita senao cont <- 0 soma <- para i de 1 ate n faca   soma <- soma + cont   cont <- cont + 1   fimpara   fimse escreval ("Soma:", soma)

Somatório Recursivo funcao somatorio ( n:Inteiro ):Inteiro inicio se n=1 entao retorne 1 senao retorne n + somatorio (n-1)‏ fimse fimfuncao Inicio escreva("Digite um número: ") ‏ leia (numero) ‏ escreval ("O Somatório de ", numero, " é ", somatorio (numero)) fimalgoritmo

Algoritmos Recursivos x Iterativos Todo algoritmo recursivo possui um algoritmo iterativo; QUASE...

Vantagens Simplifica a solução de alguns problemas Recursividades são mais compactas para alguns tipos de algoritmo, mais legíveis e mais fáceis de ser compreendidas e implementadas .

Desvantagens Por 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.

Fibonacci

Fibonacci funcao Iterativo(n : inteiro) : inteiro var fib , n1, n2, indice : inteiro inicio se (n = 0) ou (n = 1) entao retorne n senao n1 <- 0 n2 <- 1 para indice de 2 ate n passo 1 faca fib <- n2+n1 n1 <- n2 n2 <- fib fimpara retorne fib fimse f imfuncao

Fibonacci funcao Recursivo(n : inteiro) : inteiro var inicio contadorRecursivo <- contadorRecursivo + 1 se (n = 1) ou (n = 0) entao retorne n senao retorne (Recursivo(n - 2) + Recursivo(n - 1)) fimse fimfuncao

Fibonacci funcao RecursivoMemorizado (n : inteiro) : inteiro var inicio contadorRecursivoMemorizado <- contadorRecursivoMemorizado + 1 se (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] fimse fimfuncao

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.
Tags