Upload
leonardo-lima
View
4.278
Download
4
Embed Size (px)
Citation preview
Recursividade em Linguagem C:
A função recursiva é um método de determinadas linguagens de programação de
executa-las a si mesmas, ou seja, dentro de um código, tem a capacidade de chamar
um “subcódigo” para ser executado. Porem a função não é ilimitado, pelo contrario, o
numero de vezes que uma função pode ser chamada recursivamente é do mesmo
tamanho da pilha (stack - um tipo abstrato de dado e estrutura de dados baseado)
quando o valor deste limite é alcançado o programa se termina como o erro: “Stack
overflow” ou ainda “erro: Stack fault”.
As funções recursivas são em sua maioria soluções mais elegantes e simples, se
comparadas funções mais tradicionais, já que utilizam tarefas repetitivas sem executar
uma estrutura de repetição como o while ou for. Apesar da simplicidade é preciso
tomar cuidado com certos problemas como o de pilha, e ainda como é pesada para
uma CPU utilizar a recursividade.
Como funciona:
Como já explicado a função recursiva chama a si mesma de uma forma limitada, para
entender melhor é mostrado duas divisões fundamentais desta função.
Ponto de paragem: O ponto de paragem da recursividade deve ser definido
sem a utilização da mesma, sendo este ponto geralmente um limite inferior ou
superior ao limite geral.
Regra geral: O método geral da recursividade reduz a resolução do problema
através da invocação recursiva de casos menores sendo resolvidos por casos
ainda menores e assim sucessivamente, até atingir o ponto de paragem que
finaliza o método.
Exemplo:
#include<stdio. h>
Int factorial (int n){
If (n == 0 ) < ponto de paragem >
Return 1;
Else if (n < 0){
Printf (“Fatorial negativo não é permitido.\n”);
Exit (0); }
Return n*fatorial (n-1);
}
Cada vez que uma função é chamada e executada corretamente de forma
recursiva, seus parâmetros obtêm copias que são alojadas e armazenadas
temporariamente, assim não perdendo os valores de chamadas anteriores e ainda
só sendo acessível a instancia do parâmetro criado inicialmente e não de outras
instancias.
Exemplo:
Entra fatorial (5):
5! 5*4! 4*3! 3*2! 2*1! 1*0! (0 = ponto de paragem) .
Volta ao inicio realizando e armazenando o resultado dos cálculos:
1*(1) 2*(1) 3*(2) 4*(6) 5*(24) 120
Sai 120.
Conclusão:
A recursividade é um bom método de programação para problemas simples que
geralmente acabam por exigir certas funções de repetição. Essa função de
recursividade trará resultados rápidos tornando o método principal do programa
mais simples, por isso deve ser implementada como uma solução para diversos
problemas.
Referencias:
PDF’s de Silvana Maria Affonso e “sssinformatica”:
http://wiki.icmc.usp.br/images/a/aa/Aula09-Recursao_2010.pdf
http://www.sssinformatica.com.br/prc/Recursividade2.pdf
Nome: Leonardo N. Lima ADS – 2ºsemestre