Howto compute the factorial of x

0 votes
asked Sep 24, 2010 by power-mosfet

how to get the value of an integer x, indicated by x!, it is the product of the numbers 1 to x.

Example: 5! 1x2x3x4x5 = 120.

int a , b = 1, c = 1, d = 1; 
printf("geheel getal x = ");
scanf("%d", &a);
printf("%d! = ", a);
for(b = 1; b <= a; b++)
{
     printf("%d x ", c);
     c++;
     d = d*a;
}
printf(" = %d", d);

7 Answers

0 votes
answered Sep 24, 2010 by prasoon-saurav

how to get the som of an integer x, indicated by x!, is the product of the numbers 1 to x.

Did you mean factorial of x ?

Change d = d*a; to d = d*b inside the loop

0 votes
answered Sep 24, 2010 by patrice-bernassola

Try

d = d * b;

instead of

d = d * a

and it should work fine

0 votes
answered Sep 24, 2010 by codaddict

You can simply do:

for(b = 1; b <= a; b++) {
  d *= b;
}
// d now has a!
0 votes
answered Sep 24, 2010 by christoffer

You actually have a lot of redundant code there, that might be why you did not spot the error yourself.

To calculate the factorial, you only need the accumulator (d in the above code) and the input (a). Why?

0 votes
answered Sep 25, 2010 by r

This is the optimal implementation in size and speed:

int factorial(int x)
{
    static const int f[13] = { 1, 1, 2, 6, 24, 120, /* ... */ };
    if ((unsigned)x < (sizeof f/sizeof f[0])) return f[x];
    else return INT_MAX+1; /* or your favorite undefined behavior */
}

Hint: x! (x factorial) does not fit in an int except for very very small values of x.

0 votes
answered Sep 15, 2017 by umair-zia
int factorial(int x)
{
    int f;
    if (x == 0)
    {
        f = 1;
    }
    else if (x > 0)
    {
     f = x*factorial(x-1);
    }
    return f;
}

int main()
{
   int n = 0;
   cout << factorial(n);

   return 0;
}
0 votes
answered Sep 15, 2017 by victor-motricala

My code is not good as other but it works for me:

#include <iostream>
using namespace std;

unsigned int fattoriale (int n){
    if (n == 1){
        return 1;
    }
    else {
        return n * fattoriale(n-1);
    }
}

int main() {
    int tmp, num;
    cin >> num;

    tmp = fattoriale(num);

    cout << "Stampo il fattoriale del numero inserito: " << tmp << endl;

}
Welcome to Q&A, where you can ask questions and receive answers from other members of the community.
Website Online Counter

...