階乘是正整數特有的運算,正實數是沒有直接的階乘定義。但是如果把階乘函數中離散的點連成一條光滑的曲線,就得到了正實數的階乘。
\(\Gamma\)函數的定義為
\(\Gamma(x)=\int_0^{+\infty}t^{x-1}e^{-t}dt\;(x>0)\)
實際上,\(\Gamma\)函數就是階乘在正實數上的擴展
\(\Gamma(n+1)=n!\)
python代碼驗證如下
from functools import reduce
from math import gamma
def factorial(n):
"""計算n的階乘,即n!"""
if n == 0:
return 1
return reduce(lambda x,y: x*y, range(1, n+1))
for i in range(11):
print(i, factorial(i), math.gamma(i+1)-factorial(i))
-------------------
0 1 0.0
1 1 0.0
2 2 0.0
3 6 0.0
4 24 0.0
5 120 0.0
6 720 0.0
7 5040 0.0
8 40320 0.0
9 362880 0.0
10 3628800 0.0