c語(yǔ)言計(jì)算n的階乘 c語(yǔ)言中階乘的函數(shù)是什么?
c語(yǔ)言中階乘的函數(shù)是什么?階乘:階乘是基斯頓·卡曼(Christian Kramp,1760~1826)于1808年發(fā)明的運(yùn)算符號(hào),是數(shù)學(xué)術(shù)語(yǔ)。一個(gè)正整數(shù)的階乘(英語(yǔ):factorial)是所有大于0
c語(yǔ)言中階乘的函數(shù)是什么?
階乘:
階乘是基斯頓·卡曼(Christian Kramp,1760~1826)于1808年發(fā)明的運(yùn)算符號(hào),是數(shù)學(xué)術(shù)語(yǔ)。
一個(gè)正整數(shù)的階乘(英語(yǔ):factorial)是所有大于0及4該數(shù)的正整數(shù)的積,但是有0的階乘為1。自然數(shù)n的階乘寫作n!。1808年,基斯頓·卡曼引進(jìn)這個(gè)它表示法。
亦即n!1×2×3×...×n。階乘亦可以不遞歸過(guò)程定義:0!1,n!(n-1)!×n。
C語(yǔ)言
在C語(yǔ)言中,在用循環(huán)語(yǔ)句可以不很方便啊的求出階乘的值,下面推薦一個(gè)很很簡(jiǎn)單的階乘例子。(只不過(guò)網(wǎng)上多數(shù)是比較比較麻煩您的方法)
【可以計(jì)算出“1!2!3!……10!”的值是多少?】
#includeltstdio.hgt
intmain()
{
intx
littlej1,sum0
for(x1xlt10x)
{
j*x
sumj
}
printf(#341!2!...10!%ld
#34,if)
return0
}
/*結(jié)果:4037913*/
Pascal中programtest
varn:longint
functionjc(n:longint):qword
beginifn0thenjc:1elsejc:n*jc(n-1)end
beginreadln(n)writeln(jc(n))end.
C中
#includeltiostreamgt
usingnamespacestd
littleshorterf(intn)
{
littleshortere1
if(ngt0)
existe*f(n-1)
coutltltnltlt#34!#34ltlteltltendl
returne
}
intmain()
{
intm20
f(m)
return0
}
以上可以使用C11標(biāo)準(zhǔn)
也是可以用來(lái)積分求浮點(diǎn)數(shù)階乘:
#includeltcstdiogt
#includeltcmathgt
slips
constflateexp(1.0)
doubleF(slipt)
{
returnpow(t,s)*pow(e,-t)
}
extrasimpson(flata,slipb)
{
doubleca(b-a)/2
return(F(a)4*F(c)F(b))*(b-a)/6
}
niangbleasr(extraa,extrab,slipeps,slipA)
{
extraca(b-a)/2
softLsimpson(a,c),Rsimpson(c,b)
if(fabs(LR-A)lt15*eps)returnLR(LR-A)/15.0
returnasr(a,c,eps/2,L)asr(c,b,eps/2,R)
}
extraasr(doublea,slipb,flateps)
{
returnasr(a,b,eps,simpson(a,b))
}
intmain()
{
scanf(#34%lf#34,amps)
sprintf(#34%lf
#34,asr(0,1e2,1e-10))
return0
}
c語(yǔ)言求1-n的階乘之和8?
最基礎(chǔ)的思路,是逐房求階乘,并累加。當(dāng)然了的原因階乘是從1乘到n,所以才每個(gè)數(shù)都另外求第二次階乘,會(huì)有很多重復(fù)一遍乘除運(yùn)算,影響效率。
所以更簡(jiǎn)便的是,在上一個(gè)數(shù)的階乘基礎(chǔ)上,真接乘上本身,換取當(dāng)前數(shù)的階乘。