第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つにして、
グローバル変数を使わないように変更してください。
初心者のためのc++ vc++ c言語 入門 基礎から応用までへ
初心者のための excel 2007 2010 2013 vba マクロ 入門 基礎から応用まで
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
vb講義トップへ
VB講義基礎へ
専門用語なしのC++入門へ
専門用語なしのJava入門へ
専門用語なしのVBA入門
数独のページ
魔方陣のページ
数学研究室に戻る
本サイトトップへ