Escreva um programa que leia um número e uma função que calcula o fatorial de um número. Implementar uma versão recursiva e uma versão com estrutura de repetição. Deixe o usuário escolher qual versão deve retornar a resposta.
Olá Aline,
Pelo o que entedi do enunciado da questão, a estruturta de repetição seria um
while ou um for. Lembrando que o fatorial de um número inteiro pode ser
calculado por:
fatorial(n) = 1 se n = 1 ou n = 0
n * (n -1) se n > 1
Dado a definição acima a implementação recursiva do fatorial é bem direta. Se
não for usada a recursão, então devemos usar uma repetição para calcular o
valor de n * (n -1) * (n -2) * ... * 1. Para que fique evidente a maneira de como
iremos implementar o fatorial iterativo vamos reescrever a definição fatorial(n) por:
fatorial(n) = 1 se n = 1 ou n = 0
1 * 2 * ... * n se n > 1
Na definição acima observe que multiplicamos uma sequencia de números que
começa em 1 e vai até a n. Assim basta criar uma variável i para contarmos de 1
a n e outra variável para guardar o resultado de 1 * 2 * ... * i. Abaixo temos
duas implementações, uma usando um while e outra usando um for:
1) implemntação com while:
unsigned int fatorial(int n) {
int i;
unsigned int fat;
fat = 1;
if (n == 0 || n == 1) return fat;
/* comecei com i = 2 pois n deve valer pelo menos 2 para executar essa
parte do código */
i = 2;
while (i <= n) {
fat = fat * i;
i++;
}
return fat;
}
2) implementação com for:
unsigned int fatorial(int n) {
int i;
unsigned int fat;
fat = 1;
if (n == 0 || n == 1) return fat;
/* comecei com i = 2 pois n deve valer pelo menos 2 para executar essa
parte do código */
for (i = 2; i <= n; i++) {
fat = fat * i;
}
return fat;
}
Em ambos os casos usamos um while ou um for para executar efetuar o calculo do
fatorial. Todos os comando usados no while ou no for fazem parte da estrutura
de repetição. Espero ter ajudado.
Atenciosamente,
Gabriel Sobral