Académique Documents
Professionnel Documents
Culture Documents
Recursividade
2011
1 / 32
O que recursividade?
2011
2 / 32
Ao Infinito e Alm
A recursividade permite
a definio de um conjuto infinito de objetos por meio de uma formulao finita. (Wirth) escrever programas que realiza infinitas computaes com um nmero finito de instrues.
2011
3 / 32
Recursividade em Programas
Exemplo
2011
5 / 32
2011
6 / 32
2011
7 / 32
2011
8 / 32
2011
9 / 32
2011
10 / 32
Compaticidade
2011
11 / 32
Existncia da condio de parada. Deve haver um caso base a partir do qual a recurso cessa.
2011
12 / 32
O tamanho do problema deve diminuir. Isto , a cada recurso o problema deve se aproximar do caso base. Observe:
O problema int strange (int N) diminui? { if (N == 1) return 1; if (N % 2) return strange (3 * N + 1); else return strange (N / 2); }
13 / 32
2011
int fibo (int i){ if (i < 0) return 0; if (i == 0) return 1; return fibo (i 1) + fibo (i 2);}
2011
14 / 32
Fique atento!
Quantidade de chamadas recursivas sucessivas(consumo de memria). Observe o avaliador de expresso prfixada a seguir.
2011
15 / 32
Exemplo:
Infixada 5 * 4 3 * 5 + 4 3 * (5 + 4) Pr-Fixada * 5 4 + * 3 5 4 * 3 + 5 4
2011
16 / 32
2011
18 / 32
2011
19 / 32
Apesar de
2011
20 / 32
Recursivadade de Cauda
2011
21 / 32
2011
22 / 32
}
23 / 32
Programa Iterativo
Programa Recursivo
Ok!
2011
24 / 32
2011
25 / 32
e assim mesmo voc quer fazer uso de recurso? Tente Programao Dinmica.
2011
26 / 32
Programao Dinmica
Antes de se realizar uma nova computao, verifica-se se essa computao j foi realizada. Um caso tpico: Sequncia de Fibonacci.
2011
27 / 32
2011
28 / 32
Consideraes Finais
2011
30 / 32
Consideraes Finais
2011
31 / 32
Referncia
Aho & Hopcroft & Ullman Cap.2 Sedgewick Cap.5 Tenenbaum et alli Cap.3 Cormen et alli Cap.2 & 15 Qualquer outro livro sobre AED
2011
32 / 32