关于函数调用的问题,求教一下
我有一段程序,是求C=n!/(m!*(n-m)!)的值的,我先编写了两个函数如下int js(int a)
{
int n=1;
if(a==0||a==1)n=1;
if(a>1)n=js(a-1)*a;
return n;
}
float c(int x,int y)
{
float m;
m=(js(x)*1.0)/(js(y)*js(x-y)*1.0);
return m;
}
然后我另外新建了一个文本文件,并且在主函数中调用这两个函数
#include<stdio.h>
void main()
{
int a,b;
float n,m,o;
int j,k,t;
printf("input a,b=");
scanf("%d%d",&a,&b);
while(a!=0)
{
j=js(a),k=js(b),t=js(a-b);
n=j*1.0/(k*t)*1.0;
m=(js(a)*1.0)/(js(b)*js(a-b)*1.0);
o=c(a,b);
printf("j=%d,k=%d,t=%d,n=%f,m=%f,o=%f\n",j,k,t,n,m,o);
printf("input a,b=");
scanf("%d%d",&a,&b);
}
}
循环是为了能多次输入来验证,n,m,j,k,t是为了验证中间值是否正确的,
输入a=4,b=2,结果运算出来的j=24,k=2,t=2,m=6.00000,n=6.00000都是对的,但是o=2.00000就是不对,m,n,o应该是相等的!后来我把js和c两个函数剪切到和主函数同一个文本文件下面,算出来的结果就对了,o=6.00000也等于m,n了,这是为什么呢?