帮忙解释一个VB程序。。谢了

来源:百度知道 编辑:UC知道 时间:2024/05/31 14:48:09
7人(a,b,c,d,e,f,g)轮流休假一天,a可选星期2或4。b可选1,6
c 3,7 d 5 e 1,4,6 f 2,5 g 3,6,7
打印出所有可能情况
下面是一人给的递归算法。。看了半天看不明白
Private Sub Form_Click()
arr = Array(Array(2, 4), Array(1, 6), Array(3, 7), Array(5), Array(1, 4, 6), Array(2, 5), Array(3, 6, 7))
fn arr, ""
End Sub

Public Function fn(arr, ByVal s As String)
n = Len(s)
Select Case n
Case 0
For i = 0 To UBound(arr(0))
fn arr, CStr(arr(0)(i))
Next i
Case 7
sname = "赵钱孙李周吴陈"
For i = 1 To 7
Print Mid(sname, i, 1) & ":" & Mid(s, i, 1) & " ";
Next i
Print
Case Else
For i = 0 To UBound(arr(n))
If InStr(s, arr(n)(i)) = 0 Then fn arr, s & CStr(arr(n)(i))
Next i
End Select
End Function

arr放的是每个人可选的休假日
Public Function fn(arr, ByVal s As String)
n = Len(s)
Select Case n
Case 0
'第一个开始选择,下一个人继续选
For i = 0 To UBound(arr(0))
fn arr, CStr(arr(0)(i))
Next i
Case 7
'选择完毕,输出
sname = "赵钱孙李周吴陈"
For i = 1 To 7
Print Mid(sname, i, 1) & ":" & Mid(s, i, 1) & " ";
Next i
Print
Case Else
For i = 0 To UBound(arr(n))
'假如没有人选择我的预定假日,我才可以选,接下来下一个人继续选
If InStr(s, arr(n)(i)) = 0 Then fn arr, s & CStr(arr(n)(i))
Next i
End Select
End Function

很遗憾,ls混积分的那位说的是错的,Function不带括号代表放弃返回值(其实我也是来混积分的)

楼上总体思想是对的,但是对楼主的程序提出错误,Function函数调用格式必须是<涵数名>("参数","参数"),或者是CALL <涵数名>("参数","参数").必须带括号,否则出错的

来混点积分:) 别骂我挑刺哦:(