你的函数原型是这个int jiecheng(int a);调用的却是 s=jiecheng(); 没有传参进去,所以报错,应该改为:
创新互联是一家集网站建设,恩施土家企业网站建设,恩施土家品牌网站建设,网站定制,恩施土家网站建设报价,网络营销,网络优化,恩施土家网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
int s;
int result;
scanf("%d",s);
result=jiecheng(s);
另外,还要做一个特殊处理,比如:当参数为零时,输出为1;当参数为-1时,输出0;当为负数时,提示不正确
阶乘:
阶乘是基斯顿·卡曼(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;
}
静态变量可以记录上一次的值,因为你这是用for(i=1这样来循环的,所以比如第一次循环
i=1 p=1*1=1
i=2 p=1*2=2(1是上一次的p)
i=3 p=2*3=6 (2是上一次的p)
i=4 p=6*4=24
这样自然就计算出了1到10之间,每个数的阶乘。