我使用 c 创建了这个简单的程序来计算组合。但是,每当我为变量“n”和“r”输入较大的值(如 20、30、40..)时,程序输出都是不正确的。但是这个程序适用于像 5,7,10 这样的小数字......我如何解决这个问题以找到组合,甚至输入大数字 n 和 r ?
我也想在这个程序中使用 nCr = n-1Cr + n-1Cr-1 规则,我正在使用 C 语言
#include <stdio.h>
int fact(int i){
if(i <= 1){
return 1;
}
return i * fact(i-1);
}
int nCr(int n,int r){
int nCr;
if(r == 0 || n == r){
nCr = 1;
}else{
nCr = (fact(n-1)/(fact(r) * fact(n-1-r))) + (fact(n-1)/(fact(r-1) * fact(n-r)));
}
return nCr;
}
int main(){
int n,r;
printf("Enter n : ");
scanf("%d",&n);
printf("Enter r : ");
scanf("%d",&r);
printf("nCr value : %d\n",nCr(n,r));
return 0;
}
非常感谢您的回答。