第10講 プロシージャの再帰的使用
第8話 Subプロシージャの再帰的使用による自然配列の発生(2次元版)


入門
実現プログラムコード例
Dim cn As Byte
Private Sub CommandButton1_Click()
  cn = 0
  Call f(0, 0)
End Sub
Sub f(i As Byte, j As Byte)
  cn = cn + 1
  Cells(5 + i, 2 + j) = cn
  If i + 1 < 10 Then
    Call f(i + 1, j)
  Else
    If j + 1 < 10 Then
      Call f(0, j + 1)
    End If
  End If
End Sub
参考ファイル


解説
  cn = cn + 1
  Cells(5 + i, 2 + j) = cn
の2行は順番を交換すると
  Cells(5 + i, 2 + j) = cn + 1
  cn = cn + 1
となります。
カウンター(数を数える変数)は、
前処理するか後処理するかをよく考えてください。
If文
  If i + 1 < 10 Then
    Call f(i + 1, j)
  Else
    If j + 1 < 10 Then
      Call f(0, j + 1)
    End If
  End If
は難解ですが、理解できますでしょうか。
基本はiを進めて、i + 1 が10のとき、
j + 1 が10未満なら、
iを0に初期化して、jを進めるという訳です。


さて、次の課題です。
今回グローバル変数cnを用意しましたが、
引数を3つにして、
グローバル変数を使わないように変更してください。







第7話へ 第9話へ



トップ

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

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