Академический Документы
Профессиональный Документы
Культура Документы
2° Período
RECURSIVIDADE
Conceito
Função chamando
a si própria
Recursão Indireta
Vantagens da recursão
Redução do tamanho do código fonte.
Maior clareza do algoritmo para problemas de definição
naturalmente recursiva.
Desvantagens da recursão
Baixo desempenho na execução devido ao tempo para
gerenciamento das chamadas.
Dificuldade de depuração dos subprogramas recursivos,
principalmente se a recursão for muito profunda.
Resumindo
Na maioria das vezes a codificação na forma recursiva é mais
simples (reduzida), mas a forma interativa tende a ser mais
eficiente.
Recursividade
Como criar uma Função Recursiva
5! = 5 * 4 * 3 * 2 * 1 = 120
4! = 4 * 3 * 2 * 1 = 24
3! = 3 * 2 * 1 = 6
2! = 2 * 1 = 2
1! = 1 e 0! = 1
ou seja
Funções não Recursivas (Fatorial)
Função
de Leitura
Função
de Fatorial
Regra Geral
5! = 5 * 4 * 3 * 2 * 1
5 * 4!
5 * 4 * 3!
5 * 4 * 3 * 2!
5 * 4 * 3 * 2 * 1.
Ponto de Parada
4! = 4 * 3 * 2 * 1
3! = 3 * 2 * 1
Funções Recursivas (Fatorial)
Função Recursiva
de Leitura
Função Recursiva
de Fatorial
Teste de Mesa
Considerando que o
usuário digitou num = 5
fatorial(5)
Chamada return 4 * 6 = 24
fatorial(4)
Chamada return 3 * 2 = 6
fatorial(3)
Chamada return 2 * 1 = 2
fatorial(2)
Chamada
return 1
fatorial(1)
Construindo uma Função Recursiva
Por padrão, a = = = = = = = =
Posição 1 é 0 e Posição 2 Posição 3 Posição 4 Posição 5 Posição 6 Posição 7 Posição 8 Posição 9
a Posição 2 é 1 + + + + + + + +
Posição 1 Posição 2 Posição 3 Posição 4 Posição 5 Posição 6 Posição 7 Posição 8
Função
de Leitura
Função
de Fibonacci
Regra Geral
Função Recursiva
de Leitura
Função Recursiva
de Fibonacci
Teste de Mesa
Fibonacci(6)
Chamada
Fibonacci(5) + Fibonacci(4)
Chamada
Fibonacci(2) + Fibonacci(1)