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;
}