您的位置:

c语言阶乘静态,阶乘值c语言编程

本文目录一览:

C语言 利用静态变量求s=1+2!+3!+……+n!的阶乘总和

#include stdio.h  

int fac(int);  

int main()  

{

    int i,sum=0,n;

    printf("请输入n的值:");

    scanf("%d",n);  

    for(i=1;i=n;i++)  

      s+=fac(i);

    printf("sum=%d\n",s);

    return 0;  

}  

int fac(int n)  

{  

    static int f=1;  

    f=f*n;  

    return f;  

}

c语言怎么用递归调用函数的方法求n的阶乘?

1、打开VC6.0软件,新建一个C语言的项目:

2、接下来编写主程序,首先定义用来求阶乘的递归函数以及主函数。在main函数里定义变量sum求和,调用递归函数fact(),并将返回值赋予sum,最后使用printf打印sum的结果,主程序就编写完了:

3、最后运行程序,观察输出的结果。以上就是C语言使用递归求阶乘的写法:

C语言,用静态局部变量计算阶乘原理是什么?

静态变量可以记录上一次的值,因为你这是用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之间,每个数的阶乘。

c语言求阶乘的函数

阶乘:

阶乘是基斯顿·卡曼(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;

}