词条 | 阶乘 |
释义 | 阶乘(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条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。