c语言求阶乘的函数

Python038

c语言求阶乘的函数,第1张

阶乘阶乘是基斯顿·卡曼(ChristianKramp,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!”的值是多少?】#include<stdio.h>intmain(){intxlongj=1,sum=0for(x=1x<=10x++){j*=xsum+=j}printf("1!+2!+...+10!=%ld\n",sum)return0} /*结果:4037913*/Pascal中programtestvarn:longintfunctionjc(n:longint):qwordbeginifn=0thenjc:=1elsejc:=n*jc(n-1)endbeginreadln(n)writeln(jc(n))end.C++中#include<iostream>usingnamespacestdlonglongf(intn){longlonge=1if(n>0)e=n*f(n-1)cout<<n<<"!="<<e<<endlreturne}intmain(){intm=20f(m)return0} 以上使用C++11标准也可以利用积分求浮点数阶乘:#include<cstdio>#include<cmath>doublesconstdoublee=exp(1.0)doubleF(doublet){returnpow(t,s)*pow(e,-t)}doublesimpson(doublea,doubleb){doublec=a+(b-a)/2return(F(a)+4*F(c)+F(b))*(b-a)/6}doubleasr(doublea,doubleb,doubleeps,doubleA){doublec=a+(b-a)/2doubleL=simpson(a,c),R=simpson(c,b)if(fabs(L+R-A)<=15*eps)returnL+R+(L+R-A)/15.0returnasr(a,c,eps/2,L)+asr(c,b,eps/2,R)}doubleasr(doublea,doubleb,doubleeps){returnasr(a,b,eps,simpson(a,b))}intmain(){scanf("%lf",&s)printf("%lf\n",asr(0,1e2,1e-10))return0}

n的阶乘就是从1到的累积,所以可以通过一个for循环,从1到n依次求积即可。

参考代码:

#include "stdio.h"

int main() {

int n,i,s=1

scanf("%d",&n)

for(i=1i<=ni++)//for循环求累积

s=s*i

printf("%d\n",s)

return 0

}

/*

运行结果:(例如求5的阶乘)

5

120

*/

扩展资料: 

return用法:

return返回一个数值的意思就是把return<表达式>后面表达式的值返回给调用他的函数。举个例子:

int sum(int i,int j)

{

return i+j

printf("这个语句不会被执行,因为该子函数执行到上面的return语句就无条件结束了")

}

main()

{

int a=10,b=11,c

c=sum(a,b)

printf("%d",c)

}

#include <stdio.h>

main()

{

long n,sum=1//10 以上的阶乘就比较大了

int i

printf("请输入你要求的阶乘:")

scanf("%d",&n)//先输入要求的数

for(i=ni>0i--)//乘到1为止

{

sum*=i

}

printf("%d != %d",n,sum)

return 0

}