of 18 /18
Lógica de Programação Recursividade Regis Pires Magalhães [email protected] Última atualização em 07/08/2008

Logica Algoritmo 08 Recursividade

Embed Size (px)

Text of Logica Algoritmo 08 Recursividade

  • 1. Lgica de Programao Recursividade
      • Regis Pires Magalhes
      • [email_address]
      • ltima atualizao em 07/08/2008

2. Recursividade

  • Um algoritmo que para resolver um problema divide-o em subprogramas mais simples, cujas solues requerem a aplicao dele mesmo, chamado recursivo, seja de forma direta ou indireta.
  • Em geral, uma rotina recursiva R pode ser expressa como uma composio formada por um conjunto de comandos C (que no contm chamadas a R) e uma chamada (recursiva) rotina R:

Recurso Direta 3. Exemplo

  • Fatorial
    • A definio de fatorial :
      • F(n) = 1 se n = 0 ou n = 1;
      • F(n) = n * F(n-1), se n>1.
      • onde n um numero inteiro positivo. Uma propriedade (facilmente verificvel) dos fatoriais que:
        • n! = n * (n-1)!
    • Esta propriedade chamada de propriedade recursiva: o fatorial de um numero pode ser calculado atravs do fatorial de seu antecessor.
      • F(4) = 4 * F(4-1)
      • F(3) = 3 * F(3-1)
      • F(2) = 2 * F(2-1)
      • F(1) = 1 * F(1-1)
      • F(0) = 1

4. Caso base ou Condio de Parada

  • Como uma funo recursiva pode chamar a si mesma indefinidamente, essencial a existncia do caso base, ou condio de parada.

5. Forma geral

  • Esquematicamente, os algoritmos recursivos tm a seguinte forma:
  • se "condicao para o caso de base" entao
  • resolucao direta para o caso de base
  • senao
  • uma ou mais chamadas recursivas
  • fimse

6. Caso Base

  • Um algoritmo recursivo pode ter um ou mais casos de base e um ou mais casos gerais.
  • E para que o algoritmo termine, as chamadas recursivas devem convergir em direo ao caso de base, seno o algoritmo no terminar jamais.
  • Convergir significa ter uma parte menor do problema para ser resolvido.
  • F(4) = 4.F(4-1)
  • F(3) = 3.F(3-1)
  • F(2) = 2.F(2-1)
  • F(1) = 1.F(1-1)
  • F(0) = 1 ------------ Caso Base
  • F(1) = 1.1
  • F(2) = 2.1
  • F(3) = 3.2
  • F(4) = 4.6

7. Exemplo

  • algoritmo "fatorial"
  • var
  • numero: inteiro
  • funcao fat (n:Inteiro):Inteiro
  • inicio
  • se n=0 entao
  • retorne 1
  • senao
  • retorne n * Fat (n-1)
  • fimse
  • fimfuncao
  • inicio
  • escreva("Digite um nmero: ")
  • leia (numero)
  • escreval("O fatorial de ", numero, " ", fat(numero))
  • fimalgoritmo

8. Exemplo no recursivo

  • algoritmo "fatorial"
  • var
  • numero: inteiro
  • funcao fat (n:Inteiro):Inteiro
  • var i, resultado : inteiro
  • inicio
  • resultado