VBA

【再帰処理をマスターしよう】VBAで階乗の計算をしてみる

vbakaijo
ねぇもりさん、このまえプログラミングの本を読んでたら「再帰」っていう処理をみたんだけど、ぜんぜんわからなかったよ
もりさん
もりさん
おっ、再帰処理だね。よ~し!じゃあいっしょに勉強しよっか

再帰処理を使って階乗の計算をしてみよう

まずは「再帰」と「階乗」の用語の確認からしましょう。

再帰とは

再帰(さいき)は、あるものについて記述する際に、記述しているものそれ自身への参照が、その記述中にあらわれることをいう。

うーん、むずかしいですね~
でも大丈夫です。もりさんがしっかり解説してくれますから

階乗とは

階乗とは、1~nまでの数字の積です。
n! = n × (n-1) ×・・・× 3 × 2 × 1

n=5の場合、

5!=5×4×3×2×1なので「5の階乗は120」となります。

コード

下記のコードをF8キーでステップ実行してみてください

Functionプロシージャ nの階乗()の、この部分が再帰です。

nの階乗 = n * nの階乗(n - 1)

Function nの階乗() が、 Function nの階乗()に引数を渡して呼び出します

再帰のやさしい解説

もりさん
もりさん
言葉で説明するのはむずかしいんだ~。ってことで、この図をみてみよう

kaijo2
この図をみると、階乗の計算はこんな風に分解できますね。

  • 5の階乗=5 × 4の階乗
  • 4の階乗=4 × 3の階乗
  • 3の階乗=3 × 2の階乗
  • 2の階乗=2 × 1の階乗
  • 1の階乗

これらの数字をすべてnに置き換えるとこのように書けます。

nの階乗=n × (n-1)の階乗

「呼び出す」と「返る」を理解する

kaijo1

①[5の階乗]は5×[4の階乗]なので、[4の階乗]を求めるために、function nの階乗()に引数4を渡して呼び出す

②[4の階乗]は4×[3の階乗]なので、[3の階乗]を求めるために、function nの階乗()に引数3を渡して呼び出す

③[3の階乗]は3×[2の階乗]なので、[2の階乗]を求めるために、function nの階乗()に引数2を渡して呼び出す

④[2の階乗]は2×[1の階乗]なので、[1の階乗]を求めるために、function nの階乗()に引数1を渡して呼び出す

⑤[1の階乗]は “1”なので、呼び出し元に1を返す

⑥[2×1]=”2”なので、呼び出し元に2を返す

⑦[3×2]=”6”なので、呼び出し元に6を返す

⑧[4×6]=24なので、呼び出し元に24を返す

最後:[5×24]は120である

このように、

①呼び出す→②呼び出す→③呼び出す→④呼び出す→⑤返る→⑥返る→⑦返る→⑧返る

のイメージがつかめればバッチリです!

「自身への参照」って聞くと不思議な感じだけど、ただ単純に、プロシージャがプロシージャを呼び出してるだけなんだね
もりさん
もりさん
すばらしい!そのとおり!今日の授業はかんぺきだね~おつかれさま
非エンジニアもプログラミングを学習する時代!

「プログラミング」ってエンジニアとかプログラマーの人がするものでしょ?文系の私には関係ないや~って思っていませんか?

いまは、非エンジニアもプログラミングを学習する時代です!

「プログラミングの必修化」をご存知ですか?

  • 2020年~ 小学校で開始
  • 2021年~ 中学校で開始
  • 2022年~ 高等学校で開始
  • 2024年~ 高校受験科目に新設

学校での必修化に向けて、すでに子ども向けプログラミングスクールが多数開校されています。

あと数年もすれば、あたりまえにプログラミングができる新入社員がやってくる時代になります。

プログラミングってなに?どんなもの?まずは無料体験から試してみませんか?

 

1週間の無料体験あり!
オンラインスクール実績No.1!

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です