階乗

本ページには広告が含まれています。

階乗の定義

階乗とは自然数\(n\)から1までのすべての整数を掛け合せたもので\(n!\)と表記します。

定義式は以下のとおりです。\(\prod\)はパイと読みます。円周率で使われる\(\pi\)の大文字です。

  1. 総乗記号を用いた定義 \[n!=\prod_{k=1}^{n} k=n \times (n-1) \times … \times 3 \times 2 \times 1\]
  2. 再帰的な定義 \[ n!= \left\{ \begin{align*} 1, && (n=0) \\ n \times (n-1)! && (n>0) \end{align*} \right. \]

なお、0の階乗は1と定められています。

階乗の計算

例えば5の階乗は総乗記号を用いて計算すると以下のようになります。5から1までの整数の積で求めることができます。

\[5! = \prod_{k=1}^{5} k = 5 \times 4 \times 3 \times 2 \times 1=120\]

0から20までの階乗は以下のとおりです。

値(\(n\)) 表記 結果(\(n!\))
0 0! 1
1 1! 1
2 2! 2
3 3! 6
4 4! 24
5 5! 120
6 6! 720
7 7! 5,040
8 8! 40,320
9 9! 362,880
10 10! 3,628,800
11 11! 39,916,800
12 12! 479,001,600
13 13! 6,227,020,800
14 14! 87,178,291,200
15 15! 1,307,674,368,000
16 16! 20,922,789,888,000
17 17! 355,687,428,096,000
18 18! 6,402.373,705,728,000
19 19! 121,645,100,408,832,000
20 20! 2,432,902,008,176,640,000

表を見てわかるとおり、\(n\)の値が大きくなると\(n!\)は指数関数的に増えていきます。ビックリマーク(!)を使う理由は、階乗がびっくりするくらい大きな数になるからとも言われています。

階乗のプログラミング実装

FOR-TO文を使った階乗計算

UWSC
FUNCTION fact(n)
	DIM num = 1
	FOR i = 2 TO n
		num = num * i
	NEXT
	RESULT = num
FEND

再帰処理を使った階乗計算

UWSC
FUNCTION fact(n)
	IFB n = 0 OR n = 1 THEN
		RESULT = 1
	ELSE
		RESULT = n * fact(n - 1)
	ENDIF
FEND