Escolar Documentos
Profissional Documentos
Cultura Documentos
Câmpus Goiânia
Bacharelado em Sistemas de Informação
Disciplina: Estruturas de Dados II
Recursividade
Definição recursiva:
n! = 1, para n = 0;
n! = n × (n-1)!, para n > 0.
Implementação Iterativa
Definição não recursiva (tradicional):
n! = 1, para n = 0.
n! = 1 × 2 × 3 × .... × n, para n > 0.
Implementação Iterativa
Implementação Recursiva
Definição recursiva:
n! = 1, para n = 0;
n! = n × (n-1)!, para n > 0.
Implementação Recursiva
Chamada de Método
Mas como o programa diferencia a variável n da primeira chamada da
variável n da segunda chamada do método fatorial?
Registro de Ativação
Chamada de Método
Programa Principal
Registro de Ativação
Registro de
Ativação
Fat(0)
Registro de
Ativação
Fat(1)
Registro de
Ativação
Fat(2)
Registro de
A cada término de FAT, o controle retorna para a Ativação
Fat(3)
expressão onde foi feita a chamada na execução
anterior, e o último conjunto de variáveis que foi
alocado é liberado nesse momento. Esse mecanismo Registro de
Ativação
utiliza uma pilha. Fat(4)
Definição recursiva:
a × b = a, se b = 1;
a × b = a + a × (b - 1), se b > 1.
Exemplo: Sequência de Fibonacci
A sequência de Fibonacci é a sequência de inteiros:
1, 1, 2, 3, 5, 8, 13, 21, 34, ...
Cada elemento nessa sequência é a soma dos dois elementos
anteriores. Por exemplo: 1+1=2; 1+2=3; 2+3=5 ...
Implementação Recursiva
Exemplo: Sequência de Fibonacci
Usando a implementação recursiva, para calcular fib(5) foi preciso
calcular fib(4) 1 vez, fib(3) 2 vezes, fib(2) 3 vezes e fib(1) 2 vezes.
Este tipo de processamento é inadequado, já que o computador é
obrigado a fazer trabalho desnecessário.
Na implementação iterativa, apenas foi necessário calcular fib(5),
fib(4), fib(3), fib(2) e fib(1) apenas 1 vez.
Chamadas recursivas
para calcular fib(7).
Vantagens
A principal vantagem das funções recursivas é a possibilidade de utilizá-
las para criar versões mais claras e simples de vários algoritmos