**Factorial(ファクトリアル)**とは、ある自然数 n に対して、1 から n までのすべての整数を掛け合わせた値のことです。ファクトリアルを使うと、組み合わせ数を簡単に調べることができます。また、再帰アルゴリズムの学習にも役立つので、なでしこで問題を解いて楽しみましょう!
単純な階乗計算
まず最初に、1からnまでのすべてを掛け合わせた値を求めてみましょう!
# --- 階乗を計算する関数 ---
●(Nの)階乗計算とは:
もし、N=0ならば、1で戻る
それは、N×((N-1)の階乗計算)
# --- テスト ---
Nを1から10まで繰り返す:
Nの階乗計算して表示。
以下より実行できます!
実行すると、下記のように表示されます:
1
2
6
24
120
720
5040
40320
362880
3628800
もう少し説明的なプログラムに改良しよう
なお、もう少し分かりやすく実行手順を説明するプログラムを作ると、下記のようになります。
# 階乗を説明付きで計算するプログラム
●(NとLの)階乗計算とは:
もし、N=0ならば:
[1, L]で戻る
LにNを配列追加。
A = (N-1)とLの階乗計算
[A[0]×N, A[1]]で戻る。
# テスト
Nを1から10まで繰り返す:
A=(Nと[]の階乗計算)
「{A[1]を"×"で配列結合}={A[0]}」を表示
以下で実行できます:
結果は次のように表示されます:
1=1
2×1=2
3×2×1=6
4×3×2×1=24
5×4×3×2×1=120
6×5×4×3×2×1=720
7×6×5×4×3×2×1=5040
8×7×6×5×4×3×2×1=40320
9×8×7×6×5×4×3×2×1=362880
10×9×8×7×6×5×4×3×2×1=3628800
nCr と nPr を求めよう
nCrとは、n人の中からr人を選ぶ方法の数を求めることです。
そして、nPrは、順序を考慮しつつ、n人の中からr人を選ぶ方法を求めることです。
例えば、5C2とは、5人の中から2人を選ぶ方法で、次のように10通りあります。
1,2
1,3
1,4
1,5
2,3
2,4
2,5
3,4
3,5
4,5
また、5P2は、上記の組合せの内、[1,2]と[2,1]を別のものとして数える方法です。
このような組合せの数を調べるには、以下のように階乗計算をするプログラムで求めることができます。
●(Nの)階乗計算とは:
もし、N=0ならば、1を戻す
それは、N×((N-1)の階乗計算)
●(NのRを)組合せ計算とは:
A=Nの階乗計算
B=Rの階乗計算
C=(N-R)の階乗計算
それは、A÷(B×C)
●(NのRを)順列計算とは:
A=Nの階乗計算
B=(N-R)の階乗計算
それは、A ÷ B
「5人から2人を選ぶ方法は?」と表示
5の2を組合せ計算して表示。
「(順序を考慮して)5人から2人を選ぶ方法は?」と表示
5の2を順列計算して表示。
プログラムを実行するには、以下から試せます。
実行すると、下記のように表示されます。
5人から2人を選ぶ方法は?
10
(順序を考慮して)5人から2人を選ぶ方法は?
20
ファクトリアルも面白い
先日、フィボナッチ数列が面白いことを書きましたが、こうしてプログラムを作ってみると、ファクトリアルも十分面白いですよね!自分で実装してみて、遊んでみてください!!