Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Guilherme Corintho

exercício fatorial

Recommended Posts


Estou tentando fazer este exercício:


Elabore um programa que calcule N! (fatorial de N), sendo que o valor inteiro

de N é fornecido pelo usuário. Sabendo que:

N! = N x (N-1) x (N-2) x ... x 3 x 2 x 1;

0! = 1, por definição.


O meu código:



int N, x;

printf ("Digite um numero inteiro e positivo para ser calculado seu fatorial: ");

scanf ("%d", &N);

for (x = 1; x < N ; x++){

N = N *(N-x);

}

printf ("N = %d", N);


Problema: A partir de N = 3 da um resultado gigante e negativo.

Gostaria que pudessem me dizer o que estou fazendo de errado, mas se não for possível, apenas responder com uma maneira certa de fazer o exercício já ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A condição de parada do for está errada.

3! = 6. Se está dando overflow, vc está fazendo algo muito errado.

 

 

int main(void) {
   unsigned long int fatorial = 1;
   unsigned int N, M;
 
   scanf("%u", &N);
   M = N;
   while (N) {
      fatorial*=N;
      N--;
   }
 
   printf("%u! = %llu%\n", M, fatorial);
   return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.