1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

**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

ファクトリアルも面白い

先日、フィボナッチ数列が面白いことを書きましたが、こうしてプログラムを作ってみると、ファクトリアルも十分面白いですよね!自分で実装してみて、遊んでみてください!!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?