搞不懂的递归 --#
For i = 1 To 2
For j = 1 To 2
Debug.Print i & "*" & j & "=" & i* j
Next
Next
我想用递归的形式实现以上功能,咋实现不了呢!!!
Sub NFor(sIndex As Long)
If sIndex > 2 Then Exit Sub
For i = 1 To 2
NFor (sIndex + 1)
Debug.Print sIndex & "*" & i & "=" & sIndex * i
Next
End Sub
[解决办法]
注意把握递归要有个结束的标识就可以了
Private Sub Command1_Click() NForEnd SubSub NFor(Optional sIndex As Long = 0) Dim i As Long If sIndex > 2 Then Exit Sub If sIndex > 0 Then For i = 1 To 2 Debug.Print sIndex & "*" & i & "=" & sIndex * i Next Else For i = 1 To 2 NFor i Next End IfEnd Sub
[解决办法]
Dim s() As StringDim intMax As IntegerPrivate Sub Command1_Click() intMax = 0 Erase s ReDim s(2 To 4) '从几开始,至几结束 NFor 0, 2, 4 '工程-->部件里面添加 Microsoft Script control 1.0End SubSub NFor(Optional sIndex As Long = 0, Optional vMin As Long = 0, Optional vMax As Long = 0) Dim i As Long If sIndex > 0 Then If vMin <= intMax Then For i = 1 To vMin s(vMin) = s(vMin - 1) & "*" & CStr(i) NFor 1, vMin + 1 If vMin = intMax Then Debug.Print s(vMin) & "=" & ScriptControl1.Eval(s(vMin)) Next End If Else intMax = vMax For i = 1 To vMin s(vMin) = CStr(i) NFor 1, vMin + 1 Next End IfEnd Sub