#include<stdio.h>
int factorial(int num)
{
int result = 1;
for(int i = 2; i <= num; i++)
{
result *= i;
}
return result;
}
int comb(int n, int p)
{
return factorial(n)/(factorial(p)* factorial(n-p));
}
int main()
{
int n, p;
printf("%d",comb(5,2));
}
如何根据值5,2计算组合? 该程序背后的逻辑是什么?
答案 0 :(得分:0)
n!
表示the factorial of n。在这种情况下,n = 5
和n! = 5 * 4 * 3 * 2 * 1 = 120
还有p! = 2
和(n - p)! = 6
。
因此,您有120 / (2 * 6)
,这给了我们10。
计算n的阶乘时,首先将一个名为result
的变量设置为1
。
然后,此result
变量与for循环内从2
到n
的每个数字相乘,结果为
result = 1 * 2 * 3 * ... * n
n
和p
您可能还想问用户输入数字n
和p
:
int main()
{
int n, p;
printf("Enter n and p comma seperated: ");
scanf("%d, %d", &n, &p);
printf("The result is %d\n", comb(n,p));
}
示例:
Enter n and p comma seperated: 5, 2
The result is 10