首先謝謝大家及snoopy的解答
先收起來
再來是經過近兩個星期的分析(遞迴真是讓自己傷透腦)
自己的(VB)版本出來了
Private Function NumAssemble(ByVal NumberString As String, Optional ByVal strIndex As String) As String
Dim i As Integer
Dim L As Integer
Dim NewNumberString As String
Dim strTemp As String
Dim strIndexNoChange As String
L = Len(NumberString)
If L = 1 Then
NumAssemble = NumberString
Else
For i = 1 To L
If i > 1 Then NewNumberString = Left(NumberString, i - 1)
If i < L Then NewNumberString = NewNumberString + Mid(NumberString, i + 1)
If i = 1 Then strIndexNoChange = strIndex
strIndex = strIndexNoChange + Mid(NumberString, i, 1)
strTemp = NumAssemble(NewNumberString, strIndex)
If Len(NewNumberString) = 1 Then
strTemp = strIndex + strTemp
If InStr(1, NumAssembleText, strTemp) = 0 Then '排除重複的組合
NumAssembleText = NumAssembleText + strTemp + LEND
End If
End If
Next i
End If
End Function
'NumAssembleText 為一個輸出顯示TextBox
'Call NumAssemble("12345"),其中 12345 可以任意更改不受限制1234、1234565343...
'其中有排除重複的功能所以 12344 不會是 5!=120種組合(而是 60種組合)
'至於第一篇的URL 的語言原來是 Python (聽說 BT是用此開發的),
'當初就是想要將那個範本改成VB,結果發現 Python 的一句VB要好多種判斷
'好在剛剛忽然開竅終於寫出來,所以 自己的 四星彩模擬器 Beta 3.0 在一兩天內就會釋出
|