一个简单的组合数计算函数,但运行结果不对,自己又看不出哪里出了问题……
#include<stdio.h>
int combi(int m, int n)
{
int m1 = 1;//存储m!的变量
int n1 = 1;//存储n!阶乘的变量
int m_n1;//存储m和n之差(m-n)的变量
int m_n2 = 1;//存储(m-n)!的变量
int i;//计数变量
int ans_1;//存储组合数计算结果的变量即C(m,n)
for(i = 1; 1 <= m; i++)//m!的计算循环
m1 = m1 * i;
for(i = 1; 1 <= n; i++)//n!的计算循环
n1 = n1 * i;
m_n1 = m - n;
for(i = 1; 1 <= m_n1; i++)//(m-n)!的计算循环
m_n2 = m_n2 * i;
ans_1 = m1 / (n1 * m_n2);//计算公式
return ans_1;//返回值(组合数的计算结果)
}
int main(void)
{
int n, r;
int ans_2;
printf("Please enter the n: ");//输入事件个数
scanf("%d", &n);
printf("Please enter the r: ");//输入组合中的事件个数
scanf("%d", &r);
ans_2 = combi(n, r);//使用定义函数进行计算,并将结果赋给ans_2
//我明白这里也可以直接利用combi()进行输出,这个版本的程序是后期调试的结果……
printf("The combination of r and n is: %d\n", ans_2);
return 0;
}
求高人指点,感激不尽~