第9講 プロシージャの再帰的使用
第9話 普遍的n次生成ソフト開発
実行画面
これはすべての順列を求めるソフトです。
何の順列を発生させるのかをnに入力してエンターして下さい。
n=4
1 2 3 4
1 2 4 3
1 3 2 4
1 3 4 2
1 4 2 3
1 4 3 2
2 1 3 4
2 1 4 3
2 3 1 4
2 3 4 1
2 4 1 3
2 4 3 1
3 1 2 4
3 1 4 2
3 2 1 4
3 2 4 1
3 4 1 2
3 4 2 1
4 1 2 3
4 1 3 2
4 2 1 3
4 2 3 1
4 3 1 2
4 3 2 1
生成された4次順列は24個です。

を実現するソフトのコード例
Module Module1

  Dim cn, x(25), n As Integer
  Sub Main() '私は社長だ。
    Console.WriteLine ("これはすべての順列を求めるソフトです。")
    Console.WriteLine ("何の順列を発生させるのかをnに入力してエンターして下さい。")
    Console.Write ("n=")
    n = Console.ReadLine()
    cn = 0
    f (0)
    Console.WriteLine("生成された{0:d}次順列は{1:d}個です。", n, cn)
  End Sub

  Sub f(g As Integer)
    Dim i, j, h As Integer
    For i = 0 To n - 1
      If g = 0 Then x(g) = i + 1
      h = 1
      If g > 0 Then
        For j = 0 To g - 1
          If x(j) = i + 1 Then
            h = 0
            Exit For
          End If
        Next
        If h = 1 Then x(g) = i + 1
      End If
      If h = 1 Then
        If g + 1 < n Then
          f (g + 1)
        Else
          cn += 1
          For j = 0 To n - 1
            Console.Write("{0:d} ", x(j))
          Next
          Console.WriteLine()
        End If
      End If
    Next
  End Sub

End Module

これはソフトやアプリの名に恥じないプログラムです。
キーボードからnの値を入力してやれば、
何次でも自動生成できるからです。
ただし、30次辺りになると膨大な時間がかかりますが。

ですが、皆さんの頭の中は爆発しそうになっていませんか。
いや、もうすでに爆発しているよ!
という人もいるでしょうね。
第10話で詳しく解説しましょう。

第8話へ   第10話へ

002

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

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