问题说明和一段代码

时间:2018-10-10 13:33:08

标签: c

Link to the problem

#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计算组合? 该程序背后的逻辑是什么?

1 个答案:

答案 0 :(得分:0)

为什么5和2的输出为10?

n!表示the factorial of n。在这种情况下,n = 5n! = 5 * 4 * 3 * 2 * 1 = 120

还有p! = 2(n - p)! = 6

因此,您有120 / (2 * 6),这给了我们10。

阶乘函数如何正确工作?

计算n的阶乘时,首先将一个名为result的变量设置为1

然后,此result变量与for循环内从2n的每个数字相乘,结果为

result = 1 * 2 * 3 * ... * n

要求用户输入np

您可能还想问用户输入数字np

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