C++组合数计算程序怎么写

来源:百度知道 编辑:UC知道 时间:2024/05/29 09:28:51
#include <iostream>
using namespace std;
long fac(int);
long C(int ,int );
int main()
{
int n,k;
long s;
cin >> n >> k;

s = C(n,k);
cout << s << endl;
return 0;
}

long fac(int i)
{
long int s;

if (i == 1 || i == 0)
return 1;
else

s = i * fac(i - 1);
return s;
}
long C(int a,int b)
{
int j(0),m(0),q;

q = fac(j)/fac(j - m) * fac(m);
return q;
}
这个编程哪里错了?

这个程序没有什么大问题。你是看到结果跟你的预想不同吧
那是因为
long C(int a,int b)
{
int j(0),m(0),q;

q = fac(j)/fac(j - m) * fac(m);
return q;
}
这个函数里面根本就没有用到参数a和b,输出的结果一直都是1

把公式q = fac(j)/fac(j - m) * fac(m);改成
q = fac(a)/(fac(a - b) * fac(b));就行了,记得加括号
main函数里面改成cout<<q<<endl;return 0;