sábado, 25 de abril de 2009

Fatorial Recursivo em C

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é.

5 comentários:

  1. if ((n==0) or (n==1)
    return 1;
    else
    return n*fatorial(n-1);

    ResponderExcluir
    Respostas
    1. Da no mesmo não.. pq se colocar zero como argumento, ele entra em loop infinito..

      Excluir
  2. Valeu mano, procurei uma coisa simples assim por tantos sites e não encontrava... Obrigado... Abraços...

    ResponderExcluir
  3. Queria saber como calcular o fatorial usando recursividade, mas incrementando.

    ResponderExcluir