(Cnm是m在上n在下)
非递归法:
#include<stdio.h>
long fac(long);
int main(){
long m,n,a=1,b;
scanf("%ld%ld",&n,&m);
b=n;
for(;n>=b-m+1;n--)
{
a=a*n;
}
printf("%ld",a/fac(m));
}
long fac(long x){
long p=1;
for(;x>1;x--)
{
p=p*x;
}
return p;
}
递归法:
#include<stdio.h>
int face(int n,int m)
{
static int b=n;
if(n>=b-m+1)
return (n*face(n-1,m));
else
return 1;
}
int fac(int x){
int p=1;
if(x>=1)
return (x*fac(x-1));
else
return 1;
}
int main(){
int m,n,a=1,b;
scanf("%d%d",&n,&m);
a=face(n,m);
printf("%d",a/fac(m));
}