【发布时间】:2013-10-13 05:44:08
【问题描述】:
我正在尝试学习 C++,因此我正在尝试执行一个函数来计算二项式系数。该代码的 n 为 12,对于较大的值,生成的结果不正确。非常感谢您的意见。
long double binomial(int n, int k) {
int d = n-k;
int i = 1, t = 1, n1 = 1, n2 = 1;
if (d == 0) {
return 1;
} else if (n==0) {
return 1;
} else {
while (i <=n) {
t *= i;
if (i == d) {
n1 = t;
cout << t;
}
if (i == k) {
n2 = t;
cout << t;
}
i++;
}
}
return t/n1/n2;
}
int main() {
int n, k;
cout << "Select an integer n: \n";
cin >> n;
cout << "Select an integer k: \n";
cin >> k;
long double v = binomial(n,k);
cout << "The binomial coefficient is: " << v << "\n";
return 0;
}
【问题讨论】:
-
听起来像是整数溢出。
-
有趣的是,这里唯一可观的数字是 ret-val,
long double。所有其他都是常规的int值。我认为这是解决问题的尝试,顺便说一句,john 和 H2CO3 都正确识别。
标签: c++ integer overflow binomial-coefficients