Neste pequeno tutorial vou demonstrar o cálculo do fatorial utilizando recursividade na linguagem C. O fatorial de um número é igual a ele mesmo vezes ele menos um até chegar em um, exemplo:
Fatorial de 4 é igual a 4*3*2*1 que é igual a 24.
Fatorial de 5 é igual a 5*4*3*2*1 que é igual a 120.
Na função a seguir temos cálculo do fatorial de um número sem usar recursividade. Ela recebe como parâmetro um número inteiro e retorna o fatorial daquele número.
int fatorial (int n)
{
int i;
i = n - 1;
for (i; i!=1; i--)
n = n * i;
return n;
}
Então podemos considerar que:
- o fatorial de 5 é igual a 5 multiplicado pelo fatorial de 4;
- o fatorial de 4 é igual a 4 multiplicado pelo fatorial de 3;
- o fatorial de 3 é igual a 3 multiplicado pelo fatorial de 2 e assim por diante.
Montando uma função matemática temos:
fatorial de x = x * fatorial de ( x -1 );
Entendido isso, a nossa função recursiva está praticamente pronta, basta adicionar uma condição de fim, que na função anterior é i diferente de 1. Veja a seguir a implementação da função em C.
int fatorial (int n)
{
if(n==1)
return n;
return fatorial(n-1) * n;
}
Simples assim, até.
if ((n==0) or (n==1)
ResponderExcluirreturn 1;
else
return n*fatorial(n-1);
Mas dá no mesmo. :)
ExcluirDa no mesmo não.. pq se colocar zero como argumento, ele entra em loop infinito..
ExcluirValeu mano, procurei uma coisa simples assim por tantos sites e não encontrava... Obrigado... Abraços...
ResponderExcluirQueria saber como calcular o fatorial usando recursividade, mas incrementando.
ResponderExcluir