Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Recursividade: Conceito, Algoritmos e Exemplos, Notas de estudo de Engenharia Telemática

Este documento aborda o conceito de recursividade em ciência da computação, apresentando funções matemáticas como o fatorial e a sequência de fibonacci, algoritmos recursivos e iterativos para resolver esses problemas, e considerações finais sobre a importância e aplicabilidade da recursividade em soluções de problemas. O documento também inclui um exemplo de algoritmo recursivo para a torre de hanói.

Tipologia: Notas de estudo

Antes de 2010

Compartilhado em 30/11/2010

samuel-santos-22
samuel-santos-22 🇧🇷

4.6

(41)

262 documentos

1 / 36

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
Recursividade
Elloá B. Guedes
http://sites.google.com/site/elloaguedes
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24

Pré-visualização parcial do texto

Baixe Recursividade: Conceito, Algoritmos e Exemplos e outras Notas de estudo em PDF para Engenharia Telemática, somente na Docsity!

Recursividade

Elloá B. Guedes [email protected] http://sites.google.com/site/elloaguedes

Fatorial

  • Função matemática
    • Fatorial(0) = 1
    • Fatorial(1) = 1
    • Fatorial(2) = 2 x 1 = 2
    • Fatorial(3) = 3 x 2 x 1 = 6
    • Fatorial(4) = 4 x 3 x 2 x 1 = 24
    • Fatorial(5) = 5 x 4 x 3 x 2 x 1 = 120
    • Fatorial(6) = 6 x 5 x 4 x 3 x 2 x 1 = 720
    • Fatorial(n) = n x n -1 x ... x 2 x 1 = n!

Fatorial

  • Algoritmo para calcular o fatorial?

*int i = 0 int fatorial = 1; for (i = 1; i <= n; i++){ fatorial = i; }

Repensando o algoritmo do Fatorial

  • Fatorial(0) = 1
  • Fatorial(1) = 1 * Fatorial(0) = 1
  • Fatorial(2) = 2 x 1 = 2 x Fatorial(1) = 2 x 1 = 1 Fatorial(3) = 3 x 2 x 1 = 3 x Fatorial(2) = 3 x 2 x Fatorial(1) = 3 x 2 x 1 x Fatorial(0) = 3 x 2 x 1 x 1 = 6

Repensando o algoritmo do Fatorial

  • Algoritmo para calcular o fatorial de acordo com esta nova abordagem?

int fatorial(int n){ if (n == 0 ) return 1; else return nfatorial(n-1); }*

Recursividade

  • Ocorre quando um algoritmo precisa recorrer a si mesmo para calcular um valor ou procedimento
  • É necessário definir um critério de parada
    • Recursividade infinita

Seqüência de Fibonacci

  • Seja a seguinte seqüência:
    • 1, 1, 2, 3, 5, 8, 13, ...
    • Qual o próximo número da seqüência?

Seqüência de Fibonacci

  • Seja a seguinte seqüência:
    • 1, 1, 2, 3, 5, 8, 13, ...
    • Qual o próximo número da seqüência?
  • Obtido a partir da soma de seus dois precedentes - 1, 1, 1+1 = 2, 1 + 2 = 3, 3 + 2 =5, 5 +3 = 8, ...

Fibonacci Iterativo

  • Exemplo de implementação

int fibonacciArray[30]; fibonacciArray[0] = 1; fibonacciArray[1] = 1; fibonacciIterativo(fibonacciArray,28);

Fibonacci Iterativo

void fibonacciIterativo(int array[], int size){ int i; for (i = 2; i < 28; i++){ array[i] = array[i-1] + array[i-2]; } int j; for (j = 0; j < 30; j++){ printf("%d ",array[j]); }

}

Fibonacci Recursivo

void fibonacciRecursivo(int f1, int f2) { int f3 = f1 + f2; printf("%d ", f3); getchar(); fibonacciRecursivo(f2,f3); }

Recursividade

  • Algoritmos recursivos
    • Conjunto finito de passos
    • Resolve um problema
  • Adequados para definições auto-contidas

Pilha de Recursividade

  • Uso de pilha para controlar as chamadas das funções - Cada nova chamada a função, empilha os valores de chamada no topo da pilha - Se há solução, desempilha e utiliza o resultado no novo topo da pilha - Senão, divide o problema em problemas menores e empilha

Pilha de Recursividade