Recursão em C
Dica publicada em C/C++ / Introdução
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.
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.
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));
}
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.