Por: Eduardo Casavella
Chamamos de recursividade ou recursão quando uma função chama a si mesma.
Sim amigos, isto é possível, uma função pode invocar a si mesma!
Como funciona a recursividade?
Em uma função recursiva, a cada chamada é criada na memória uma nova ocorrência da função com comandos e variáveis “isolados” das ocorrências anteriores.
A função é executada até que todas as ocorrências tenham sido resolvidas.
Porém um problema que surge ao usar a recursividade é como fazê-la parar. Caso o programador não tenha cuidado é fácil cair num loop infinito recursivo o qual pode inclusive esgotar a memória…
Toda recursividade é composta por um caso base e pelas chamadas recursivas,.
Caso base: é o caso mais simples. É usada uma condição em que se resolve o problema com facilidade.
Chamadas Recursivas: procuram simplificar o problema de tal forma que convergem para o caso base.
Vantagens da recursividade
- Torna a escrita do código mais simples e elegante, tornando-o fácil de entender e de manter.
Desvantagens da recursividade
- Quando o loop recursivo é muito grande é consumida muita memória nas chamadas a diversos níveis de recursão, pois cada chamada recursiva aloca memória para os parâmetros, variáveis locais e de controle.
- Em muitos casos uma solução iterativa gasta menos memória, e torna-se mais eficiente em termos de performance do que usar recursão.
Exemplo clássico de recursividade: fatorial
//Cálculo de fatorial com função recursiva
#include <stdio.h>
#include <conio.h>
//protótipo da função fatorial
double fatorial(int n);
int main(void)
{
int numero;
double f;
printf("Digite o numero que deseja calcular o fatorial: ");
scanf("%d",&numero);
//chamada da função fatorial
f = fatorial(numero);
printf("Fatorial de %d = %.0lf",numero,f);
getch();
return 0;
}
//Função recursiva que calcula o fatorial
//de um numero inteiro n
double fatorial(int n)
{
double vfat;
if ( n <= 1 )
//Caso base: fatorial de n <= 1 retorna 1
return (1);
else
{
//Chamada recursiva
vfat = n * fatorial(n - 1);
return (vfat);
}
}
Tela de Execução
Explicação do código
No programa acima, se o número n for menor ou igual a 1 o valor 1 será retornado e a função encerrada, sem necessidade de chamadas recursivas. Caso contrário dá-se início a chamadas recursivas até cair no caso mais simples que é resolvido e assim, as chamadas retornam valores de forma a solucionar o cálculo.
Veja a figura a seguir que representa as chamadas recursivas para o cálculo de 5!
Até a próxima!

