再帰的なプログラミング技法の例としてヒルベルト曲線を例示します。
Public Sub Proc11() 'Hilbert Const isize = 400 Dim ict, lenn, IX, iy, id Select Case Ivar Case 1: ict = 3 Case 2: ict = 4 Case 3: ict = 5 Case 4: ict = 6 Case Else: ict = 3 End Select Dperas: Dpwind 0, 0, 640 lenn = isize / (2 ^ ict) IX = (isize / 2) - isize / (2 ^ (ict + 1)) iy = -(isize / 2) + isize / (2 ^ (ict + 1)) id = 270 : drawA ict - 1, IX, iy, id, lenn End Sub Private Sub drawA(ict, IX, iy, ByVal id, lenn) If ict $lt; 0 Then Exit Sub id = id - 90: drawB ict - 1, IX, iy, id, lenn: drawLine IX, iy, id, lenn id = id + 90: drawA ict - 1, IX, iy, id, lenn: drawLine IX, iy, id, lenn drawA ict - 1, IX, iy, id, lenn: id = id + 90: drawLine IX, iy, id, lenn drawB ict - 1, IX, iy, id, lenn: id = id - 90 End Sub Private Sub drawB(ict, IX, iy, ByVal id, lenn) If ict $lt; 0 Then Exit Sub id = id + 90: drawA ict - 1, IX, iy, id, lenn: drawLine IX, iy, id, lenn id = id - 90: drawB ict - 1, IX, iy, id, lenn: drawLine IX, iy, id, lenn drawB ict - 1, IX, iy, id, lenn: id = id - 90: drawLine IX, iy, id, lenn drawA ict - 1, IX, iy, id, lenn: id = id + 90 End Sub Private Sub drawLine(IX, iy, id, lenn) Dim ioldx, ioldy If id < 0 Then id = id + 360 If id >= 360 Then id = id - 360 ioldx = IX: ioldy = iy Select Case id Case 0: IX = IX + lenn Case 90: iy = iy - lenn Case 180: IX = IX - lenn Case 270: iy = iy + lenn End Select Dpmove (ioldx), (ioldy): Dpdraw (IX), (iy) End Sub