imagem
Menu.c
HOME
CONTATO
AGRADECIMENTOS
 Fatorial

Iteração versus Recursão

No exemplo do fatorial, a implementação iterativa tende a ser ligeiramente mais rápida na prática do que a implementação recursiva, uma vez que uma implementação recursiva precisa registrar o estado atual do processamento de maneira que ela possa continuar de onde parou após a conclusão de cada nova execução subordinada do procedimento recursivo.
Esta ação consome tempo e memória.

 Código Iterativo

#include <stdio.h>
#include <stdlib.h>

float normal(float x) {
float fat = 1;
while (x != 1) {
fat = fat * x;
x = x - 1;
}
return fat;
}

int main(void) {
setbuf(stdout, NULL);
float x;
printf("** Fatorial Normal **\n\n");
printf("Digite um n�mero: ");
fflush(stdin);
scanf("%f", &x);
printf("fatorial de %.0f: %.0f", x, normal(x));

return 0;
}

 Código Recursivo

#include <stdio.h>
#include <stdlib.h>

int fat(int n) {
if (n)
return n * fat(n - 1);
else
return 1;
}

int main() {
setbuf(stdout, NULL);
int n;
printf("** Fatorial **\n\n");
printf("Digite um valor para n: ");
scanf("%d", &n);
printf("\nO fatorial de %d e %d", n, fat(n));

return 0;
}
Criado por João Paulo Aramuni - 2011