#include<stdio.h>
void main()
{
float fac1(int n);
float fac2(int m);
float fac3(int n,int m);
int n;
int m;
float y,x,z;
printf("输入两个整数");
scanf("%d",&n,&m);
y=fac1(n);
x=fac2(m)*fac3(n,m);
z=y/x;
printf("%10.0f\n",z);
}
float fac1(int n)
{
float f;
if(n<0)
{
printf("error");
}
else
if(n==0||n==1)
f=1;
else
f=fac1(n-1)*n;
return(f);
}
float fac2(int m)
{
float f;
if(m<0)
{
printf("error");
}
else
if(m==0||m==1)
f=1;
else
f=fac2(m-1)*m;
return(f);
}
float fac3(int n,int m)
{
float f;
if((n-m)<0)
{
printf("error");
}
else
if((n-m)==0||(n-m)==1)
f=1;
else
f=fac3((n-m)-1)*(n-m);
return(f);
}
不需要这么多函数。。。直接一个求阶乘的就行。
#include <stdio.h>
int fun(int a)
{
int f;
if (a==1||a==0)
f=1;
else
f=a*fun(a-1);
return f;
}
void main()
{
int n,m;
float x;
printf("输入2个数:\n");
scanf("%d%d",&n,%m);
x=fun(n)/fun(m)*fun(n-m);
printf("结果是:%f\n",x);
}
2. fac3(n,m)有两个参数的
float fac3(int n,int m)
{
//...
f=fac3((n-m)-1)*(n-m); //这里就只传递了一个参数
//...要改成f=fac3((n-m),1) * (n-m);
}
2,我们只需要定义fac1。fac2,fac3没必要定义。