A função factorial é uma função bastante utilizada na matemática e também nas linguagens de programação para exemplificar as funções iterativas e recursivas.
Note-se que o factorial de um número se calcula da seguinte forma,
n! = n x (n-1) x (n-2) x ... x 1
Exemplo,
5! = 5x4x3x2x1 = 120
Uma função iterativa normalmente está associada a um ciclo, não deixa operações suspensas e vai acumulando um eventual resultado.
Uma função recursiva, invoca-se a si mesma para executar as instruções.
Em baixo deixarei um programa, na versão iterativa e recursiva, que pede o número para o qual se pretende saber o factorial e o imprime no ecran.
Versão Iterativa:
Código:
#include <stdio.h>
long fact_iterativo (int n)
{
int i, res=1;
for (i=0;i<n;i++)
{
res=res*(n-i);
}
return res;
}
int main ()
{
int num;
printf("Introduza o numero: ");
scanf("%d", &num);
printf("%lu\n", fact_iterativo(num));
return 0;
}
Versão Recursiva:Código:
#include <stdio.h>
long int fact_recursivo (int n)
{
if (n>1)
{
return n*fact_recursivo(n-1);
}
else
{
return 1;
}
}
int main ()
{
int num;
printf("Introduza o numero: ");
scanf("%d", &num);
printf("%lu\n", fact_recursivo(num));
return 0;
}
Nota:
- Em C há N modos de estruturar o código, por exemplo, blocos com uma só instrução não necessitam dos delimitadores { e } mas eu tentarei sempre que possivel coloca-los porque na detecção de erros o uso de { } torna-se muito útil. Assim como apresentarei o código identado, com espaçamentos, etc...