Escolar Documentos
Profissional Documentos
Cultura Documentos
EMB5630
Programação II
Capı́tulo 3 - Recursão
Para entender recursão, você deve primeiro entender recursão.
pablo.andretta@ufsc.br
1 2
Conceitos Básicos
Introdução
4
Definindo uma função recursiva Definindo uma função recursiva
5 6
Definindo uma função recursiva: fatorial Definindo uma função recursiva: fibonnaci
0 caso n = 0
Fib(n) = 1 caso n = 1
Todas chamadas de função, como já vimos, são colocadas na pilha
Fib(n − 1) + Fib(n − 2) caso n > 1
• Inclusive as chamadas recursivas de função
7 8
9
Recursão / Iteração Recursão / Iteração
• Funções iterativas geralmente ocupam espaço constante, ao passo • Se o caso de parada não estiver bem definido, teremos repetições
que cada chamada de função recursiva ocupa mais espaço na pilha infinitas. Em recursão, causará estouro da pilha, quando o espaço
• Funções recursivas tendem a ser mais lentas que funções iterativas, ocupado pelas chamadas recursivas exceder o tamanho da pilha.
devido ao overhead de chamadas de função e sua criação na pilha
• Para determinados problemas as soluções recursivas são mais
elegantes, simples e práticas. Podem, porém, usar mais memória
10 11
• Triângulo de Pascal
• Uma função recursiva para imprimir um vetor, na ordem usual
• Uma função recursiva para imprimir um vetor, na ordem reversa • Máximo divisor comum
• Uma função recursiva para verificar se uma palavra é palı́ndrome • Função de Ackermann
12 13