SWUST OJ#82 求组合数

题目描述
编写一个函数,求从n 个不同的数中取r 个数的所有选择的个数。

输入
输入n 和r 的值; 当用户输入0 0 时,程序结束。

输出
根据公式: C(n,r) = C(n, r-1) * (n - r + 1) / r 输出运算结果 输入数据不满足题意时候,输出"error!"

样例输入
复制
5 3
10 20
50 3
0 0
样例输出
10
error!
19600

#include
int f(int n,int r)
{
     
    if(r==0)
        return 1;//注意调用本身到r==0时要返回1,否则会r一直减下去
    else
        return f(n,r-1)*(n-r+1)/r;//运用公式
}
int main()
{
     
    int n,r;
    while(~scanf("%d%d",&n,&r))
    {
     
        int f(int n,int r);
        if(n==0&&r==0)
            return 0;
        else if(n<r)
            printf("error!\n");
        else
        {
     
          printf("%d\n",f(n,r));

        }
    }
    return 0;
}

你可能感兴趣的:(SWUST OJ#82 求组合数)