帮忙看一段代码,求大神指导
程序的功能是计算组合数的函数combinNum(int m,int n),计算结果由函数返回。计算组合数的公式是: c(m,n)=m!/(n!*(m-n)!)。现在的问题是当输入的第一个数比第二个数大的时侯,显示的却是第一个数比第二个数小时会出现的情况;当输入的第一个数比第二个小时,显示的却是1.000000。请问哪里有问题呢?求解答~~
代码如下————
#include <stdio.h>
double combinNum(double m,double n);
int fun(int j);
main()
{
double i,j;
printf("Please enter two number:\n");
scanf("%d%d",&i,&j);
if(i<j)
{
printf("Your input is error.\n");
//printf("The result is %lf.\n",combinNum(i,j));
}
else if(i>j)
{
printf("The result is %lf.\n",combinNum(i,j));
}
else
printf("The result is 1.\n");
}
int fun(int j)
{
if(j==0||j==1)
return 1;
else
return fun(j-1)*j;
}
double combinNum(double m,double n)
{
double k=1,a,b;
if(m>n)
{
b=m-n;
a=fun(b);
k=fun(m)/fun(n)*a;
return k;
}
else if(m<n)
{
printf("Yours input is error.\n");
}
else
return 1;
}