【发布时间】:2014-04-02 21:12:32
【问题描述】:
我正在尝试为以下公式制作一个 C++ 程序:
我做了函数的选择部分:
#include <iostream>
#include <fstream>
using namespace std;
int choose();
void binomialdistribution();
int main(){
choose();
binomialdistribution();
}
int choose() {
double n = 3;
double k = 0;
double i;
double b;
double value;
while (k <= n){
if (0 == k || n == k) {
return 1;
}
if (k > n) {
return 0;
}
if (k > (n - k)) {
k = n - k;
}
if (1 == k) {
return n;
}
b = 1;
for (i = 1; i <= k; ++i) {
b *= (n - (k - i));
if (b < 0){
return -1;
}
b /= i;
}
return b;
cout << k;
k++;
binomialdistribution();
}
}
void binomialdistribution(){
cout << choose();
}
我的 k 输出为空白,我的 choose() 输出为 0000000000000000000000
任何帮助将不胜感激
【问题讨论】:
-
在打印 k、递增它并再次调用
binomialdistribution()之前,您在 while 循环中看起来像return b。 -
choose()应该返回一个双精度值。 -
仅供参考 codereview.stackexchange.com 是一个很好的资源,您可以在其中获得更一般的反馈。
-
@TooTone 您还应该注意,在推荐该站点时,他们通常希望问题中的代码能够正常工作。虽然,由于问题没有询问对代码的一般改进(你不能真正争辩说“任何帮助”归类为那 - 这就是人们所说的),我认为推荐它不是特别合适的,如果没有其他原因,根据定义,未经请求的推荐就是垃圾邮件,即使您推荐另一个 Stack Exchange 网站。
-
@Dukeling 感谢您关于正确性的观点;我认为垃圾邮件通常具有这样的含义,即该帖子是为了某种个人利益,而我的则不是。我会考虑你所说的,但我还不确定我是否会停止发布链接或制作我认为有帮助的 cmets(我相信其他人有时会从我制作的 cmets 中受益,我知道我'已经从其他人的 cmets 中受益)。
标签: c++ algorithm binomial-coefficients