2
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); }

Recursividade em linguagem C

Embed Size (px)

Citation preview

Page 1: Recursividade em linguagem C

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);

}

Page 2: Recursividade em linguagem C

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