#include stdio.h
我们提供的服务有:成都网站建设、网站建设、微信公众号开发、网站优化、网站认证、鄢陵ssl等。为上千家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的鄢陵网站制作公司
//在使用前要先对函数进行声明
long fac(int);
int main(void)
{
int n;
long ff;
scanf("%d",n);
ff = fac(n);
printf("%d!=%d\n",n,ff);
return 0;
}
//这里就是fac()
long fac(int x)
{
long f;
if(x == 0 || x== 1)
f = 1;
else
//这里又调用了fac()自己,叫做递归调用
//每次调用时都是将x-1赋给下一个fac()
f = fac(x-1) * x;
//return会把值返回到调用它的函数中去
return f;
}
//主要是要理解这个递归的过程
//假设输入的是3,过程是这样的:
#includestdio.h
main()
{
int a, b, c, d;
long e;
scanf("%d%d%d%d", a, b, c, d);
e = fac(a) + fac(b) + fac(c) + fac(d);
printf("%d", e);
}
long fac(long n)//返回
{
int i;
long jc = 1;
if (n1) jc = 1;
else{
for (i = 1; i = n; i++)
jc *= i;
}
return jc;
}
fac 是指一个返回类型为double型的函数,它需要一个整形参数(看你程序里fac的定义)。这里在main()函数里的fac(i)是对这个函数的调用,即:赋给它所需的一个整形变量i作为其参数,使之用来进行fac内部的运算。
要注意的的是,fac定义时内部的i是它内部的参数(局部的变量),它的作用范围仅限在fac内部。而现在在main()中,我们赋给fac()一个名为i的整型量,它只会将它的值给fac中的n来参与fac的运算。
其实n只是一个形式上的参数它的作用范围也仅限在fac中,但是既然把它放在fac(int n)里就赋予它一个使命将main()中给fac()的参数传入fac()中,从而完成fac()的调用。
在手机上使用易历知食软件里的微C程序设计来编程,代码示例如下图(用递归方式):
运行结果:
是用C语言么?我用递归调用帮你写个
#include stdio.h
void main()
{
int fac(int n);
int a;
float b;
prinf("input an integer number:")
scanf(%d,a)
b=fac(a)
prinf("%d!=%10.0f\n",a,b)
}
int fac(int n)
{float f;
if(n0)
{prinf("n0,dataerror!")
}
else
if(n==0||n==1)
f=1;
else
f=fac(n-1)*n:
return(f);
}
#includestdio.h
#includemath.h
double
fac(int
n)
{
if(n==1)return
1;
else
return
fac(n-1)*n;
}
int
main()
{
int
n;
scanf("%d",n);
printf("%d!=%.0lf\n",n,fac(n));
//因为20!已经超出了int的最大值,故用double型,输出的时候输出整数位
return
0;
}