如何获取由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);
答案 0 :(得分:6)
如何获得整数x的som,由x!表示,是数字1到x的乘积。
你的意思是factorial
的x?
在循环内将d = d*a;
更改为d = d*b
答案 1 :(得分:6)
您可以这样做:
for(b = 1; b <= a; b++) {
d *= b;
}
// d now has a!
答案 2 :(得分: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 */
}
提示:x!
(x
factorial)不适合int,除非x
的值非常小。
答案 3 :(得分:2)
尝试
d = d * b;
而不是
d = d * a
它应该可以正常工作
答案 4 :(得分:0)
你实际上有很多冗余代码,这可能就是你自己没有发现错误的原因。
要计算阶乘,您只需要累加器(上面代码中为d
)和输入(a
)。为什么呢?
答案 5 :(得分:0)
我的代码与其他代码不一样,但它对我有用:
#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;
}
答案 6 :(得分:0)
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;
}