第9講 プロシージャの再帰的使用
第6話 3次順列をプロシージャの再帰的使用を使わずにFor文で実現する
3次順列生成プログラム
Module Module1

  Sub Main() '私は社長だ。
    f (3)
  End Sub

  Sub f(n As Integer)
    Dim i, j, k, l, h, hh, x(24), cn As Integer '将来5次魔方陣まで生成できるように!
    cn = 0
    For i = 0 To n - 1
      x(0) = i + 1
      For j = 0 To n - 1
        h = 1
        If j + 1 = x(0) Then h = 0
        If h = 1 Then
          x(1) = j + 1
          For k = 0 To n - 1
            hh = 1
            For l = 0 To n - 2
              If x(l) = k + 1 Then
                hh = 0
                Exit For
              End If
            Next
            If hh = 1 Then x(2) = k + 1
            If hh = 1 Then
              cn += 1
              For l = 0 To n - 1
                Console.Write("{0:d} ", x(l))
              Next
              Console.WriteLine()
            End If
          Next

        End If

      Next
    Next
    Console.WriteLine("生成された{0:d}次順列は{1:d}個です。", n, cn)
  End Sub

End Module

実行画面
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
生成された3次順列は6個です。


For文で作る順列生成ソフトは、4次を最後とします。
これを作っていただいている理由は、
プロシージャの再帰的使用がいかに便利なものであるかを体感してもらためです。
For文だといちいちコードを作り直さなければなりませんが、
プロシージャの再帰的使用だとコードが短いだけでなく、
汎用的なプログラムになります。
つまり、理論的には何次順列でも生成できるソフトになります。


第5話へ   第7話へ

002

初心者のための excel 2016 マクロ VBA 入門講義 基礎から応用まで
vc** c言語 c** 入門 初心者 基礎から応用まで
eclipse c** 入門
魔方陣 数独で学ぶ VBA 入門

数独のシンプルな解き方・簡単な解法の研究
VB講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C**入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC**による C言語 C++ 入門 基礎から応用まで第1部
eclipse java 入門
java 入門 サイト 基礎から応用まで
本サイトトップへ