PROGRAMAÇÃO
ESTRUTURADA II
Profª. Noeli
Ciência da Computação
1
RECURSIVIDADE
CIÊNCIA DA COMPUTAÇÃO
FUNÇÕES RECURSIVAS
• Funções recursivas são caracterizadas
por possuírem “auto-chamadas”.
•Estas “auto-chamadas” geram uma
seqüência de execuções da função
recursivamente até que a função pare de
efetuar a “auto-chamada”.
CIÊNCIA DA COMPUTAÇÃO
FUNÇÕES RECURSIVAS
Em toda a função recursiva, existem os
componentes:
• Um passo básico (ou mais) cujo o
resultado é imediatamente conhecido;
• Um passo recursivo (ou mais) em
que se tenta resolver um subproblema do problema inicial.
CIÊNCIA DA COMPUTAÇÃO
FUNÇÕES RECURSIVAS
•Geralmente possui expressão
condicional;
•Sua execução consiste em ir resolvendo
sub-problemas mais simples, até se
atingir o mais simples de todos
(resultado conhecido de imediato)
CIÊNCIA DA COMPUTAÇÃO
RECURSIVIDADE
Estudo de Caso:
FATORIAL
CIÊNCIA DA COMPUTAÇÃO
FATORIAL NÃO RECURSIVO
int fat(int n)
{
int i, f = 1;
for(i= n; i >= 1; i--)
{
f = f * i;
}
return f;
}
CIÊNCIA DA COMPUTAÇÃO
FATORIAL RECURSIVO
int fat(int n)
{
if (n <= 1)
Condição de Parada
return 1;
else
Chamada
return n * fat(n -1);
Recursiva
}
CIÊNCIA DA COMPUTAÇÃO
VANTAGEM
• Os algoritmos recursivos
normalmente são mais compactos,
mais legíveis e mais fáceis de serem
compreendidos.
• Algoritmos para resolver problemas
de natureza recursiva são fáceis de
serem implementados em linguagens
de programação de alto nível.
CIÊNCIA DA COMPUTAÇÃO
DESVANTAGEM
• Por usarem intensivamente a pilha de
execução, o que requer alocações e
desalocações de memória, os algoritmos
recursivos tendem a ser mais lentos que os
equivalentes iterativos, mas, em muitos casos,
pode valer a pena sacrificar a eficiência em
benefício da clareza.
• Algoritmos recursivos são mais difíceis de
serem depurados durante a fase de
desenvolvimento.
CIÊNCIA DA COMPUTAÇÃO
EXERCÍCIOS
• Lista de Exercícios na sala Virtual.
•
CIÊNCIA DA COMPUTAÇÃO
Download

programação