请输入您要查询的百科知识:

 

词条 阶乘
释义

阶乘(factorial)是基斯顿·卡曼(Christian Kramp, 1760 – 1826)于1808年发明的运算符号。阶乘,也是数学里的一种术语。

阶乘的计算方法

阶乘指从1乘以2乘以3乘以4一直乘到所要求的数。例如所要求的数是4,则阶乘式是1×2×3×4,得到的积是24,24就是4的阶乘。 例如所要求的数是6,则阶乘式是1×2×3×……×6,得到的积是720,720就是6的阶乘。例如所要求的数是n,则阶乘式是1×2×3×……×n,设得到的积是x,x就是n的阶乘。

表示方法

任何大于1的自然数n阶乘表示方法:

n!=1×2×3×……×n

n!=n×(n-1)!

n的双阶乘:

当n为奇数时表示不大于n的所有奇数的乘积

如:7!!=1×3×5×7

当n为偶数时表示不大于n的所有偶数的乘积(除0外)

如:8!!=2×4×6×8

小于0的整数-n的阶乘表示:

(-n)!= 1 / (n+1)!

20以内的数的阶乘

以下列出0至20的阶乘:

0!=1,注意(0的阶乘是存在的)

1!=1,

2!=2,

3!=6,

4!=24,

5!=120,

6!=720,

7!=5,040,

8!=40,320

9!=362,880

10!=3,628,800

11!=39,916,800

12!=479,001,600

13!=6,227,020,800

14!=87,178,291,200

15!=1,307,674,368,000

16!=20,922,789,888,000

17!=355,687,428,096,000

18!=6,402,373,705,728,000

19!=121,645,100,408,832,000

20!=2,432,902,008,176,640,000

另外,数学家定义,0!=1,所以0!=1!

定义范围

通常我们所说的阶乘是定义在自然数范围里的(大多科学计算器只能计算0~69的阶乘),小数没有阶乘,像0.5!,0.65!,0.777!都是错误的。但是,有时候我们会将Gamma函数定义为非整数的阶乘,因为当x是正整数n的时候,Gamma函数的值是n-1的阶乘。

¤伽玛函数(Gamma Function)

Γ(x)=∫e^(-t)*t^(x-1)dt (积分下限是零,上限是+∞)(x<>0,-1,-2,-3,……)

运用积分的知识,我们可以证明Γ(x)=(x-1) * Γ(x-1)

所以,当x是整数n时,Γ(n) = (n-1)(n-2)……=(n-1)!

这样Gamma 函数实际上就是阶乘的延拓。

¤欧拉等式

x!=)=∫-(ln(x))^ndx (积分下限是零上限是+1)(x>0)

¤[计算机科学]

用Ruby求365的阶乘。

def AskFactorial(num) factorial=1;

1.step(num,1){|i| factorial*=i}

return factorial end factorial=AskFactorial(365)puts factorial

¤【阶乘有关公式】

n!~sqrt(2*pi*n)(n/e)^n

此为斯特林公式的简化公式(见右图)。

该公式常用来计算与阶乘有关的各种极限。

计算机语言中的阶乘

C语言中的阶乘

在C语言中,使用循环语句可以很方便的求出阶乘的值,下面介绍一个很简单的阶乘例子。(因为网上多数是比较麻烦的方法)

¤【计算出“ 1!+ 2!+ 3!+ …… + 10!”的值是多少?】

#include <stdio.h>

int main(void)

{

int x,y;

int sum = 1;

int summation = 0;

for(y=1; y <= 10; y++) {

for (x = 1; x <= y; x++) {

sum *= x;

}

summation +=sum;

}

printf("%d\\t", summation);

return 0;

}

【高精度算法求阶乘】

#include <stdio.h>

#define N 5000 // modify it to hold larger number

int main(void)

{

int n, i, j, s, up, f[N] = {0};

scanf("%d", &n);

for (i = 2, f[0] = 1; i <= n; i++)

for (j = up = 0; j < N; j++) {

s = f[j] * i + up;

f[j] = s % 10;

up = s / 10;

}

for (i = N-1; f[i] == 0; i--) ;

for (; i >= 0; i--) printf("%d", f[i]) ;

printf("\");

return 0;

}

Pascal中的阶乘

program test;

var

n: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++语言中的阶乘

#include<cstdio>

int main()

{

int fac(int);

int n;

scanf("%d",&n);

printf("%d\",fac(n));

scanf("%*s");

return 0;

}

int fac(int n)

{

return n?n*fac(n-1):1;

}

阶乘函数

int fac(int n)

{

return n?n*fac(n-1):1;

}

随便看

 

百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2024/12/23 13:54:00