#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;
}
阶乘:
阶乘是基斯顿·卡曼(Christian Kramp,1760~1826)于 1808 年发明的运算符号,是数学术语。
一个正整数的阶乘(英语:factorial)是所有小于及等于该数的正整数的积,并且有0的阶乘为1。自然数n的阶乘写作n!。1808年,基斯顿·卡曼引进这个表示法。
亦即n!=1×2×3×...×n。阶乘亦可以递归方式定义:0!=1,n!=(n-1)!×n。
C语言
在 C 语言中,使用循环语句可以很方便的求出阶乘的值,下面介绍一个很简单的阶乘例子。(因为网上多数是比较麻烦的方法)
【计算出“ 1!+ 2!+ 3!+ …… + 10!”的值是多少?】
#includestdio.h
int main()
{
int x;
long j=1,sum=0;
for(x=1;x=10;x++)
{
j*=x;
sum+=j;
}
printf("1!+2!+...+10!=%ld\n",sum);
return 0;
}
/*结果:4037913*/
Pascal中program test;
varn:longint;
function jc(n:longint):qword;
begin if n=0 then jc:=1 else jc:=n*jc(n-1)end;
begin readln (n); writeln (jc(n))end.
C++ 中
#includeiostream
using namespace std;
long long f(int n)
{
long long e=1;
if(n0)
e=n*f(n-1);
coutn"!="eendl;
return e;
}
int main()
{
int m=20;
f(m);
return 0;
}
以上使用 C++ 11 标准
也可以利用积分求浮点数阶乘:
#includecstdio
#includecmath
double s;
const double e=exp(1.0);
double F(double t)
{
return pow(t,s)*pow(e,-t);
}
double simpson(double a,double b)
{
double c=a+(b-a)/2;
return (F(a)+4*F(c)+F(b))*(b-a)/6;
}
double asr(double a,double b,double eps,double A)
{
double c=a+(b-a)/2;
double L=simpson(a,c),R=simpson(c,b);
if(fabs(L+R-A)=15*eps) return L+R+(L+R-A)/15.0;
return asr(a,c,eps/2,L)+asr(c,b,eps/2,R);
}
double asr(double a,double b,double eps)
{
return asr(a,b,eps,simpson(a,b));
}
int main()
{
scanf("%lf",s);
printf("%lf\n",asr(0,1e2,1e-10));
return 0;
}
#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;
}
fac在C语言中没有特别的含义,既不是关键字也不是库函数,可能是编程人员自定义的一个变量名或函数名等。
通常用fac来表示求阶乘的函数名,fac是阶乘英文(factorial)的前三个字母。
下面定义一个函数名为fac的阶乘函数:
double fac(int n)
{
if(n==0 || n==1) // 0和1的阶乘都为1
return 1;
if(n1)
return n*fac(n-1); // n的阶乘等于n乘以(n-1)的阶乘
}