第10講 プロシージャの再帰的使用
第6話 Functionプロシージャの再帰的使用による階乗計算プログラム


魔方陣
階乗計算プログラム例
Private Sub CommandButton1_Click()
  Dim n As Long
  n = Cells(5, 4)
  Cells(6, 4) = "n!="
  Cells(6, 5) = f(n)
End Sub
Function f(i As Long)
  If i > 0 Then
    f = f(i - 1) * i
  Else
    f = 1
  End If
End Function
Private Sub CommandButton2_Click()
  Rows("6:200").Select
  Selection.ClearContents
  Range("A1").Select
End Sub
参考ファイル

さて、
第7講 For文を入れ子式に使い多次元ループを実現する
 第6話 順列作成マクロ例
で作ったプログラムを
Subプロシージャの再帰的使用によって改良して、
何の順列であっても作成できるようにすることが、
この講の当初の最終目標でした。

再帰的使用の場合何億人にも分身可能ですから、
理論的には1から1億までの順列でも作成可能ですが、
実際的なところ12ぐらいまでの順列作成が限界です。
20ぐらいの順列でも待てばすべて作り出してくれますが、
時間がかかりすぎます。
20の順列をすべて作り出すということは、その場合の数は
20!=20×19×18×・・・×1通りもありますので、
さすがのコンピュータでも瞬時という訳にはいきません。
100ぐらいの順列だとすべてを作り出すには、
宇宙時間(宇宙の始まりから終わりまでの時間)必要かも知れません。
入門
このマクロは、初心者には余りにも難しい課題です。
そこで、順列作成プログラム開発を1つの独立した講にしたいと思います。
したがいまして、お約束の魔方陣自動生成プログラムは
第12講の課題ということになります。


ですが、これで第10講を閉めるのは、
6話構成になってしまいますので、
ちょっと寂しい限りですので、
初心者向けの課題を提示してもう少し続けます。

第7講 For文を入れ子式に使い多次元ループを実現する
 第3話 自然配列解答例
入門
で作ったプログラムをSubプロシージャの再帰的使用によって実現しましょう。

第5話へ 第7話へ



トップ

初心者のためのc++ vc++ c言語 入門 基礎から応用までへ
初心者のための excel 2007 2010 2013 vba マクロ 入門 基礎から応用まで
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
vb講義トップへ
VB講義基礎へ
専門用語なしのC++入門へ
専門用語なしのJava入門へ
専門用語なしのVBA入門

数独のページ
魔方陣のページ
数学研究室に戻る
本サイトトップへ