数学において自然数 n の階乗(かいじょう、英: factorial)n ! とは、1 から n までの全ての整数の積のことである[1]。例えば、 6 ! = 6 × 5 × 4 × 3 × 2 × 1 = 720 {\displaystyle 6!=6\times 5\times 4\times 3\times 2\times 1=720}
階乗は数学の様々な場面に出現するが、特に組合せ論、代数学、解析学などが著しい。階乗の最も基本的な出自は n 個の相異なる対象を1列に並べる方法(対象の置換)の総数が n! 通りであるという事実である。
階乗数 オンライン整数列大辞典の数列 A000142
0!1階乗の定義は、最も重要な性質を残したまま、非整数を引数とする函数に拡張することができる。そうすれば解析学における著しい手法などの進んだ数学を利用できるようになる。 いくつか同値な条件により定義することが可能である。
定義
n ! = ∏ k = 1 n k = n × ( n − 1 ) × ⋯ × 3 × 2 × 1 {\displaystyle n!=\textstyle \prod \limits _{k=1}^{n}k=n\times \left(n-1\right)\times \cdots \times 3\times 2\times 1}
再帰的な定義 n ! = { 1 , ( n = 0 ) n × ( n − 1 ) ! ( n > 0 ) {\displaystyle n!={\begin{cases}1,&(n=0)\\n\times \left(n-1\right)!&(n>0)\end{cases}}}
微分に関する「冪の法則
n! = ( n 元集合の置換の総数 )
上記の何れの定義においても、 0 ! = 1 {\displaystyle 0!=1}
となることが織り込み済みである(最初の定義では「 0 項の積は 1 と定める」という規約によって)[注釈 1]。このように定義する理由は:
零個の対象の置換は(「何もしない」という)ちょうど一通りであること。
n > 0 のとき有効な漸化式 (n + 1)! = n! × (n + 1), が n = 0 の場合にも延長できること。
指数函数などの冪級数としての表示 e x = ∑ n = 0 ∞ x n n ! {\displaystyle e^{x}=\textstyle \sum \limits _{n=0}^{\infty }{\dfrac {x^{n}}{n!}}} など多くの公式が短く表せるようになること。
組合せ論における多くの等式が任意のサイズに適用して意味を持つこと。例えば零個の元を空集合から選ぶ方法の総数は ( 0 0 ) = 0 ! 0 ! 0 ! = 1 {\displaystyle {\binom {0}{0}}={\frac {0!}{0!\,0!}}=1} であり、一般に n 元集合から n 個全ての元を選び出す方法の総数は ( n n ) = n ! n ! 0 ! = 1 {\displaystyle {\binom {n}{n}}={\frac {n!}{n!\,0!}}=1} と書ける。
など様々に挙げることができる。
より進んだ数学においては、引数が非整数の場合にも階乗函数を定義することができる(後述)。そういった一般化された定義のもとでの階乗は関数電卓や、Maple や Mathematica などの数学ソフトウェアで利用できる。 多くのプログラミング言語において、再帰的な定義を利用し、プロシージャの再帰呼び出しを用いた階乗の実装が可能である。 以下はC言語での例である。例示するコードではunsigned long long型を使用しているが、unsigned long long型では小さな階乗(21!)でもオーバーフローしてしまうため、大きな階乗については任意精度演算による実装を検討すべきである[3]。「任意精度演算#例」も参照unsigned long long factorial(unsigned int n){ if (n > 0) return n * factorial(n - 1); return 1; // 0! == 1} この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方)
プログラミング言語における階乗
組合せ論.mw-parser-output .ambox{border:1px solid #a2a9b1;border-left:10px solid #36c;background-color:#fbfbfb;box-sizing:border-box}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid #b32424;background-color:#fee7e6}.mw-parser-output .ambox-delete{border-left:10px solid #b32424}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid #fc3}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%;font-size:90%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}html.client-js body.skin-minerva .mw-parser-output .mbox-text-span{margin-left:23px!important}@media(min-width:720px){.mw-parser-output .ambox{margin:0 10%}}
出典検索?: "階乗"
階乗を含む公式は数学の多くの分野に現れるが、階乗のおおもとの出自は組合せ論にある。相異なる n 個の対象の順列(k-順列)の総数は n! 通りである。
階乗はしばしば「順番を無視する」という事実を反映するものとして分母に現れる。古典的な例としては n 個の元から k 個の元を選ぶ組合せ(k-組合せ)の総数が挙げられる。このような組合せは順列から得ることができる。実際、k-順列の総数 n k _ = n ( n − 1 ) ( n − 2 ) ⋯ ( n − k + 1 ) {\displaystyle n^{\underline {k}}=n(n-1)(n-2)\cdots (n-k+1)}
において、順番のみが違う(k-組合せでは違いが無視される)k-順列が k ! 通りずつ存在するから、k-組合せの総数は n k _ k ! = n ( n − 1 ) ( n − 2 ) ⋯ ( n − k + 1 ) k ( k − 1 ) ( k − 2 ) ⋯ 1 {\displaystyle {\frac {n^{\underline {k}}}{k!}}={\frac {n(n-1)(n-2)\cdots (n-k+1)}{k(k-1)(k-2)\cdots 1}}}
となる。この数は、二項冪 (1 + X)n における Xk の係数となることから、二項係数 ( n k ) {\displaystyle {\tbinom {n}{k}}} とも呼ばれる。
代数学に現れる階乗にはいくつも理由があるが、既述の如く二項展開の係数として現れたり、ある種の演算の対称化(英語版) において置換による平均化を行うなど、組合せ論的な理由で現れるものもある。