求助CB 大佬快来!真的不懂了

//Test.cpp 求解组合数 例如求解从五个人里面挑选二个人的组合数
#include
using namespace std;
int fac(int k){
int f;
int n;
if(k==k-n)
f=1;
else
f=fac(k-1)*k;
return f;
}//此中k=5 我是先求解5*4;
int facc(int n){
int w;
if(n==0)
w=1;
else
w=facc(n-1)*n;
return w;//这里我是求解2的阶乘
}
int faccc(int d)
{ int f,w;
d=f/w;
return d;
}//此时我用(5*4)/2!
int main(){
int d,k,n;
cin>>k>>n;
cout<<"求解组合数为:"<<faccc(d);
return 0;
}//但是无论我怎么算结果始终为一 我这个算法可能很笨拙 刚入C++希望大佬指点一二。难道是我的n值一直发生了变化么,如果是,如何锁定n值。
希望大佬可以解释我这个问题 谢谢

c++
iiiii_iiiii
大爱C++! 希望有大佬可以帮忙解答 谢谢!
大约一个月之前 回复

2个回答

先把你的代码格式调了,放到代码片里
没看懂你的代码在做什么,代码里没赋值就调用的比比皆是

int n;
if(k==k-n) //n没赋值就用了

int f,w;
d=f/w; //fw没赋值就用了

int d,k,n;
cin>>k>>n;
cout<<"求解组合数为:"<<faccc(d);//d没赋值就用了

不知道是格式问题还是你就没写,没赋值肯定是不能用的,出啥错都不奇怪
求组合数可以用这两个方法,如果你还是对你的代码有疑问可以继续问。

#include <iostream>

using namespace std;

int fac(int t){
    int n = 1;
    for( int i = 2; i <= t; i++)
        n *= i;
    return n;
} 
int facc(int k, int n){
    int a = 1, b = 1;
    for( int i = 1; i <= n && i < (k+1-i); i++){
        a *= (k+1-i);
        b *= i;
    }
    return a/b;
}
int main(){
    int k,n;
    cin >> k >> n;
    cout << fac(k) / fac(k-n) / fac(n) << endl; //数学方法
    cout << facc(k, n) << endl; //优化方法
}

int f,w;
d=f/w;
return d;
这里f没有初始化,你就参与计算?

caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 正解,的确是这个问题
大约一个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!