第9講 社員が自分に命令することを繰り返す(プロシージャの再帰的使用)
第9話 結果を報告しない社員が自分に命令を繰り返すことによる1からnまでの和の計算の非グローバル変数版
マクロ
を結果を報告しない社員がグローバル変数を用いないで、
自分に命令を繰り返すことによって実現するプログラム例
Private Sub CommandButton1_Click()
Dim a As Integer, b As Integer, c As Integer
a = Cells(5, 2)
Call f(0, a)
End Sub
Private Sub CommandButton2_Click()
Rows("6:200").Select
Selection.ClearContents
Cells(5, 2).Select
Selection.ClearContents
Cells(1, 1).Select
End Sub
Sub f(w As Integer, a As Integer)
w = w + a
If a - 1 >= 0 Then Call f(w, a - 1) Else Cells(6, 1) = w
End Sub
頭が混乱しますね。
ですが、頭の体操になります。
社員が自分に繰り返し命令することによる
応用プログラムはまだまだ考えられます。
この第11講ではこの方法を用いて、
順列を実現することを考えましょう。
順列とは1234ならば、それをすべて並び替えた
1234
1243
1324
1342
1423
1432
2134
2143
2314
2341
2413
2431
3124
3142
3214
3241
3412
3421
4123
4132
4213
4231
4312
4321
が答えです。
これを全部作り出すプログラムはFor文では非常に大変です。
まして、20個の数字の順列なら絶望的ですが、
社員が自分に命令を繰り返す方法なら簡単ですし、
普遍的な(一般的な)プログラムを作ることもできます。
さらに、これを応用すれば
魔方陣の自動生成でさえ可能になります。
もちろん、その先には数独自動生成ソフトが待っています。
すぐに魔方陣作成に入りたいところですが、
魔方陣を自動生成するには、
添え字付きの名前を持った箱(配列)の学習が必要です。
第8話へ 第10講第1話へ
vc++講義へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
vb講義へ
VB講義基礎へ
初心者のためのJava 入門 基礎から応用まで
数学研究室に戻る