Aula 15 - Recursão

Propaganda
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
Download