Recursão Recursão • É uma método geral para resolver problemas reduzindo-os a problemas mais simples do mesmo tipo Recursão • Resolva de forma recursiva (um problema) – Se o problema for trivial, faça o óbvio – Simplifique o problema – Resolva de forma recursiva (um problema mais simples) – Combine (a medida do possível) a solução do(s) problema(s) mais simples em uma solução do problema original Recursão • Um programa recursivo chama a si próprio constantemente, cada vez em uma situação mais simples, até chegar ao caso trivial, quando para. Exemplos de Algoritmos Recursivos • • • • • Cálculo do MDC Cálculo do Fatorial (n!) de um número Cálculo da Série de Fibonacci Cálculo de baseexpoente Algoritmo de ordenação do QuickSort Tipos de Recursão • Direta função chama a si mesma • Indireta função chama um programa que por sua vez chama a primeira função Exemplo • Cálculo do MDC (Máximo Divisor Comum), entre dois números inteiros (o MDC é definido como o maior número que divide dois inteiros) • Exemplo: – MDC(4,6)=2 – MDC(12,7)=1 Exemplo • Se b divide a, então o MDC é b. Caso contrário, MDC(a,b)=MDC(b, a%b) • Exemplo: – MDC(126,12) = MDC(12, 126%12) = MDC(12,6) = 6 Exemplo: Fatorial • • • • 0! = 1 1! = 1 2! = 2 . 1! = 2 3! = 3 . 2! = 3 . 2 . 1! • n! = n . (n-1) . (n-2) ... 1 • n! = n . (n-1)! Exemplo: Fatorial • Caso trivial: 0!=1 • Redução do problema: – n! = n . (n-1)!, isto é, calcula o fatorial de (n-1) a medida que vamos reduzindo o problema ele vai ficando mais simples até cair no caso trivial, quando o 0!=1, onde retornamos calculando o fatorial de n