如何计算x的阶乘

Pow*_*fet 2 c operators factorial

如何获得一个整数的值x,表示为x!,它是数字1到x的乘积.

例: 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);
Run Code Online (Sandbox Code Playgroud)

Pra*_*rav 6

如何得到整数x的索引,由x!表示,是数字1到x的乘积.

你的意思factorial是x?

切换d = d*a;d = d*b循环内部


cod*_*ict 6

你可以简单地做:

for(b = 1; b <= a; b++) {
  d *= b;
}
// d now has a!
Run Code Online (Sandbox Code Playgroud)


R..*_*R.. 5

这是大小和速度的最佳实现:

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 */
}
Run Code Online (Sandbox Code Playgroud)

提示:x!(x阶乘)不适合用int表示除了非常非常小的值x.