Escolar Documentos
Profissional Documentos
Cultura Documentos
Prof. Cristiane
Recursividade
Uma sub-rotina que chama a si mesma.
Exemplo: int fpotencia(int numero, int potencia) { potencia--; printf("\n-> funcao fpotencia"); return numero*fpotencia(numero,potencia);
}
Condio de Paragem
Como uma funo recursiva pode chamar-se a si mesma infinitamente, essencial que exista uma condio que determine o fim do processo recursivo. Condio -> determina o momento em que a funo dever parar de chamar a si mesma.
Condio de Paragem
int fpotencia(int numero, int potencia)
} }
Implementao
Duas partes fundamentais: O caso elementar ou condio de Paragem: no h necessidade de chamar uma nova instncia da funo Regra Geral: repetio do processo at atingir o ponto de paragem
}
3 3* 3* 3* pilha
Exemplo
Escrever uma funo recursiva que calcule a soma dos nmeros entre 1 e n.
1
int Soma (int n) 2+ Soma(1) { if (n>1) 3+ Soma(2) return n+Soma(n-1); else 4+ Soma(3) return 1; }
Soma(4)
Vantagens
Simplificao de alguns problemas; Pode-se obter um cdigo mais conciso e eficaz nessas situaes;
Uma soluo recursiva pode, por outro lado, eliminar a necessidade de manter o controle manual sobre uma srie de variveis normalmente associadas aos mtodos alternativos recursividade.
Desvantagens
As funes recursivas so geralmente mais lentas e ocupam mais memria do que as funes iterativas equivalentes.
Um erro de implementao pode levar ao esgotamento dos recursos associados pilha que gere a chamada a funes.
Quando usar
Recursividade: definio mais clara e precisa dos algoritmos quando o problema por natureza recursivo ou utiliza estruturas recursivas como as rvores.
Bibliografia
Faculdade de Cincias e Tecnologia da Universidade de Coimbra, ESTRUTURAS DE DADOS E ALGORITMOS, Ficha 3, 2004.
Ziviane, Nivio. Projeto de Algoritmos com implementaes em PASCAL e C. So Paulo: Editora Thomson, 2007. 2 edio.