VB递归问题,急问,

来源:百度知道 编辑:UC知道 时间:2024/05/31 02:54:09
Private P(1 To 5) '声明数组
Private mlngAllNumCount As Long, mlngGetNumCount As Long
Private mastrOneResult()
Private Sub Command1_Click()
Dim d As Long, c As Long
' 初始化数组
P(1) = 1
P(2) = 2
P(3) = 3
P(4) = 4
P(5) = 5

mlngAllNumCount = UBound(P)
For d = 1 To mlngAllNumCount
mlngGetNumCount = d
ReDim mastrOneResult(1 To mlngGetNumCount)
ListNum 1, 1
Next d
End Sub

Private Sub ListNum(ByVal Start As Long, ByVal Level As Long)
Dim i As Long
If mblnCancelProc Then Exit Sub
For i = Start To mlngAllNumCount - mlngGetNumCount + Level
mastrOneResult(Level) = P(i)
If Level < mlngGetNumCount Then '是否到了最底层
ListNum i + 1, Level + 1 '没到底,递归啦,这是本过程的核心,很简单哟
Else '递归到最深层,就可以输出了
'这里添加生成组合后的处理代码
'生成的组合在数组mastrOneResult()中
Me.List1.AddItem (Join(mastrOneResult, vbTab))

End If
Next
End Sub

请哪位高手帮我分析

If mblnCancelProc Then Exit Sub这句不要也没关系的,你试下就知道了

(这个子函数过程在结束的时候又会突然跳回到到End If这句呢)——

当然啊 ListNum i + 1, Level + 1 在是一个If语句中啊,函数调用完后,就再回到IF啊

Join(mastrOneResult, vbTab)是将mastrOneResult里的数组里的每个元素都相连,并且是用vbTab相连

如果还有不懂的地方,HI上联系吧