見出し画像

【擬似言語⑩裏】階乗 | 順列Pと組合せCへの応用(基本情報技術者, 科目B, アルゴリズム)

このNoteでは、>前回の階乗Note を流用して、順列Pと組合せCの公式計算をテーマにします。

関数の呼出しと、提示された数式を擬似言語で組むだけなので、結構簡単です。>擬似言語の11解法Note➑

簡単だったので、「0!=1!=1」や「順列P」「組合せC」の復習も追加しときました。科目Aで苦手/捨て問にしてた方は、もう一回だけチャレンジして頂けたら嬉しいです。


テキストの基礎を生かして、プログラム的な考察/工夫を学んでいきます。基礎と実用にギャップを感じる方のために作りました。
>【FEB】擬似言語の教科書Note

ぜひ一緒に学習を進めていきましょう!


このNoteは、私がIT専門学校で授業したことを基に作成しています。IT専門学校でFEは第一目標として、カリキュラムが構築されています。何も知らずに入学しても、1年生10月にはFE合格していきますよ。実績ある教育ノウハウを詰め込んだので、少しでも信頼して頂けたら嬉しいです。

>全Noteへのリンク(FE節)
※科目Aのテーマ別/科目B/旧FE午後など沢山作りました!



階乗 | 数を階段みたいに掛け算

「階乗」って、n!=n×(n-1)×(n-2)×・・・×1のような計算。例えばn=3の時、3!=3×2×1。なお、1!=0!=1です。

>前回のNote では、階乗の計算を2つの方式(forループ、再帰呼出し)で行う擬似言語を作りました。

  • ○整数型: calcFactorial(整数型: n):forループ

  • ○整数型: calcFactorialRecur(整数型: n):再帰呼出し

つまり。calcFactorial(3)で、3!=3×2×1=6を得れます。

関数の中身や、再帰関数の科目A出題は以下のNoteで。
>前回のNote
>【FE計算①】再帰関数のNote
>【AP計算⑲】再帰関数のNote


今回は使えればOK。

では、順列Pと組合せCを計算する擬似言語を組みます。公式通りにするだけなので超簡単です。>擬似言語の11解法Note➑


順列(P)の擬似言語

順列Pの数式が分かれば簡単です。

$$
_nP_r = \frac{n!}{(n-r)!}
$$

n!をcalcFactorial(n)、(n-r)!をcalcFactorial(n-r)で得て、分子分母としてガッチャンコすれば終わり。

○整数型: calcPermutation(整数型: n, 整数型: r)
  整数型: numerator    / 分子 */
  整数型: denominator  / 分母 */

  / 分子 (n!) を計算 */
  numerator ← calcFactorial(n)

  / 分母 ((n - r)!) を計算 */
  denominator ← calcFactorial(n - r)

  / 分子を分母で割った結果を返す */
  return numerator / denominator

なんなら下記でも良いかも😅

return  calcFactorial(n)/calcFactorial(n - r)


引数検査をしたいなら、以下を関数最初に追加。
nとrは0未満はダメ。n<rもダメ。

  / 引数チェック */
  if (n < r または n < 0 または r < 0)
    return -1
  endif




組合せ(C)の擬似言語

組合せCの公式。

$$
_nC_r = \frac{n!}{r!(n-r)!}
$$

calcFactorial(n), (r), (n-r)をガッチャンコって分かりますね。

○整数型: calcCombination(整数型: n, 整数型: r)
  整数型: numerator    / 分子: */
  整数型: denominator  / 分母: */
  / 引数チェック */
  if (n < r または n < 0 または r < 0)
    return -1
  endif

  numerator ← calcFactorial(n)
  denominator ← calcFactorial(r) × calcFactorial(n - r)
  return numerator / denominator


簡単でしたね。これにて今回の学習は終了です。

以下は、科目Aの補強。1!=1は分かるけど、なんで0!=1なのか。順列Pと組合せCってどんなんだったっけ。を解説します。


0! = 1! = 1の理由

順列Pや組合せCで「(n-r)!」が出ました。n=rだったら0!になります。2!=2×1, 1!=1ですが、0!=1って分かりますか?

「(n-r)!」が分母にくるので、0!=0だと計算できないんです。1/0はプログラムでは「エラー(0除算)」、数学的には「∞」になります。

ここから先は

4,029字 / 8画像

メンバーシップ ¥ 500 /月

■初月無料なので、お試しください。 ■私独自の理解法や詳しい分析を公開したいです。 ■根本を丁寧に見…

【初月無料】Iパス法律/SG/AP計算/DBとSC午後2

¥500 / 月
1ヶ月無料 人数制限あり

学習方法・問題特集のNoteは全て無料提供を続けます▼ もしご覧になったNoteが有益だったり、私の志に共感されたりしましたら、サポート頂けますと励みになります▼ もちろんコメントでも結構です(・ω・▼)ノシ