#include<stdio.h>
int main()
{
int m,n,a,b;int ans=1;
scanf("%d%d",&n,&m);
a=n-m+1;
b=1;
while(a<=n&&b<=m)
{
ans=ans*a/b;
// printf("%d %d %d\n",a,b,ans);//调试
a++;
b++;
}
printf("%d\n",ans);
return 0;
}
//c(8,3)=6*7*8/(1*2*3)
第二种方法
c(n,m)=n!/(m!*(n-m)!)
第三种递归
#include<stdio.h>
#define ERROR 0
int fun(int n,int r)
{
if(n<r)
return ERROR;//ERROR先要预先定义,不知为啥,分号为英文状态下,刚开始没想起n<r的情况,也必须加上n==r的情况,否则错误。
else
{if(1==n||0==r||n==r)
return 1;
else
return (fun(n-1,r-1)+fun(n-1,r));
}
}
int main()
{
int n,r;
scanf("%d%d",&n,&r);
printf("%d\n",fun(n,r));
return 0;
}