输入样例:
2 7
输出样例:
result = 21
/*
这题我原先的做法是定义的int fact(int n),但是有一个测试点不通过
我比对了 double fact(int n)和int fact(int n)两种情况下fact(13)的变化,发现了:
i=13的时候,result的值会错误,因为超出了int的取值范围。
所以题目会提示把fact定义为double型,注意审题啊!!
*/
#include<stdio.h>
double fact(int n);
int main(){
int m,n;
scanf("%d %d",&m,&n);
//这里我原先的方法是将num的值乘上1.0(fact是int型),然后输出的时候用%.0f,因为直接用%d会失去精度。
double num=fact(n)/(fact(m)*fact(n-m));
printf("result = %.0f\n",num);
return 0;
}
double fact(int n){
//这里的n和main函数中的n不一样,这个是本地变量,仅在fact函数中存在。
double result=1.0;
if(n>1){
for(int i=2;i<=n;i++){
result*=i;
}
}
else{
result=1.0;
}
//return result的意思是将result的值返回到fact函数中
return result;
}