Function prt(l As String, r As String) Dim n As Integer n = Len(r) If n = 0 Then Exit Function ElseIf n = 1 Then Debug.Print l & r Else Dim tmp1, tmp2, tmp3 As String Dim i As Integer For i = 1 To n tmp1 = left(r, i - 1) tmp2 = Mid(r, i, 1) tmp3 = Mid(r, i + 1) r = tmp2 & tmp1 & tmp3 prt l & tmp2, Mid(r, 2) Next End If End FunctionPrivate Sub Form_Load()prt "", "abc"End Sub
Dim tot As IntegerFunction prt(l As String, r As String) Dim n As Integer n = Len(r) If n = 0 Then Exit Function ElseIf n = 1 Then Debug.Print l & r tot = tot + 1 Else Dim tmp1, tmp2, tmp3 As String Dim i As Integer For i = 1 To n tmp1 = left(r, i - 1) tmp2 = Mid(r, i, 1) tmp3 = Mid(r, i + 1) r = tmp2 & tmp1 & tmp3 prt l & tmp2, Mid(r, 2) Next End If End FunctionPrivate Sub Form_Load() prt "", "abcdef" Debug.Print "Total:" & tot End Sub
用递归 Public Function jiecheng(ByVal n As Integer) As Long If n = 1 Then jiecheng = 1 Else jiecheng = n * jiecheng(n - 1) End If End Function
for j=1 to 3
for k=1 to 3
if i=j or j=k or i=k then
exit sub
else
'输出排列 b(i) & b(j) & b(k)
endif
next i
next j
next k
if i<>j and j<>k and i<> k then
'输出排列 b(i) & b(j) & b(k)
endif
Dim n As Integer
n = Len(r)
If n = 0 Then
Exit Function
ElseIf n = 1 Then
Debug.Print l & r
Else
Dim tmp1, tmp2, tmp3 As String
Dim i As Integer
For i = 1 To n
tmp1 = left(r, i - 1)
tmp2 = Mid(r, i, 1)
tmp3 = Mid(r, i + 1)
r = tmp2 & tmp1 & tmp3
prt l & tmp2, Mid(r, 2)
Next
End If
End FunctionPrivate Sub Form_Load()prt "", "abc"End Sub
Dim n As Integer
n = Len(r)
If n = 0 Then
Exit Function
ElseIf n = 1 Then
Debug.Print l & r
tot = tot + 1
Else
Dim tmp1, tmp2, tmp3 As String
Dim i As Integer
For i = 1 To n
tmp1 = left(r, i - 1)
tmp2 = Mid(r, i, 1)
tmp3 = Mid(r, i + 1)
r = tmp2 & tmp1 & tmp3
prt l & tmp2, Mid(r, 2)
Next
End If
End FunctionPrivate Sub Form_Load()
prt "", "abcdef"
Debug.Print "Total:" & tot
End Sub
Public Function jiecheng(ByVal n As Integer) As Long
If n = 1 Then
jiecheng = 1
Else
jiecheng = n * jiecheng(n - 1)
End If
End Function