Recursão em C

Publicado por Perfil removido em 21/09/2011

[ Hits: 7.410 ]

 


Recursão em C



É muito importante para quem se interessa por programação, conhecer todos os principais "artifícios" e possibilidades disponíveis. Dentre eles, um muito citado é a recursão, que apesar de, teoricamente, ser simples, na prática é preciso exercitar exaustivamente essa questão.

A recursão é muito conhecida por praticantes de programação funcional, e a utilizam quando se trabalha com Haskell dentre outras. Recursão é uma função, ou procedimento, que chama a si mesma no próprio decorrer da função, fazendo com que na hora da chamada, a função comece a ser executada novamente com parâmetros diferentes da anterior. E essa função chama a si mesma até que o caso base seja chamado.

Vamos exemplificar com o lendário exercício Fatorial, conhecido por todos na área de programação.

#include <stdio.h>
int fat (n){ //Uma função com parâmetro n é declarada, na qual o n é informado pelo
usuário.

   if ((n==1) || (n==0)) return 1; //Esse é o caso base da função, quando o n for reduzido a 1, a função termina a recursão.
   else
      return fat(n-1)*n; //Perceba que aqui ocorre a função fat é chamada novamente, mas ao invés de n, é chamada com (n-1)
       //Isso ocorre até que o n seja igual ao nosso caso base, no caso 1.
}

main (){ //Função main(), que chama fat pela primeira vez.
   int n;
   printf("Informe o número que deseja obter o fatorial:\n");
   scanf("%d",&n);
    printf("O fatorial de %d é %d \n",n,fat (n));
}

Compare agora nosso algoritmo feito com recursão e algum algoritmo qualquer com repetições, encontramos uma diferença substancial no tamanho do código. Na área de scripts, postei outro código em C utilizando a recursão, dessa vez abordando a série Fibonacci, estude os códigos e poste suas dúvidas, ou mande e-mails, que terei prazer em respondê-las.

Abraços.

Outras dicas deste autor

Escondendo texto em uma imagem no Linux

Instalando Steam, Spotify e Skype no Fedora 25

Instalando Skype no Fedora 23

Rodando Apache em máquina com IP falso (rede interna)

DVDisaster - Software de recuperação de mídias

Leitura recomendada

Encontrando erros em seus programas

Exibindo código ASCII das teclas

Como limpar a tela em C

Classes para vários tipos (templates)

Conversão vetor de caracteres para double

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts