其中text1用於確定長度,text2用於輸出,點Command開始計算
Dim A() As Byte
Private Sub Command1_Click()
If Not IsNumeric(Text1.Text) Then Exit Sub
If Text1.Text <= 1 Then Exit Sub
Text2.Text = ""
Dim Rows As Long, I As Integer, J As Integer
For I = 0 To Text1.Text
Rows = Rows + C(Text1.Text, I)
Next
ReDim A(1 To Rows, 1 To Text1.Text)
J = 1
For I = 0 To Text1.Text
J = FillA(J, I, 1, Text1.Text)
Next
For I = 1 To Rows
Text2.Text = Text2.Text & I & " "
For J = 1 To Text1.Text
Text2.Text = Text2.Text & A(I, J)
Next
Text2.Text = Text2.Text & Chr(13) & Chr(10)
Next
End Sub
Function FillA(StartRow As Integer, FillNum As Integer, Index As Integer, MaxNum As Integer) As Integer
'開始填充的行數,要填充的個數,開始填充的列數,最大列數
Dim I As Integer, J As Integer
If FillNum = 0 Then FillA = StartRow + 1: Exit Function
If Index + FillNum - 1 > MaxNum Then FillA = StartRow: Exit Function
If FillNum > 1 Then
For I = StartRow To StartRow + C(MaxNum - Index, FillNum - 1) - 1
A(I, Index) = 1
Next
J = FillA(StartRow, FillNum - 1, Index + 1, MaxNum)
FillA = FillA(J, FillNum, Index + 1, MaxNum)
Exit Function
End If
For I = Index To MaxNum
A(StartRow + I - Index, I) = 1
Next
FillA = StartRow + MaxNum - Index + 1
End Function
Function C(Num1 As Integer, Num2 As Integer) As Integer
If Num1 <= 1 Or Num2 <= 0 Or Num2 >= Num1 Then C = 1: Exit Function
Dim I As Integer, R As Long
R = 1
For I = 1 To Num2
R = R * (Num1 - I + 1)
Next
For I = 1 To Num2
R = R / I
Next
C = R
End Function
Private Sub Form_Load()
'設置Text2的MultiLine屬性為 True
Text2.Enabled = False
Text1.Text = 8
Text2.Text = ""
Command1.Caption = "計算"
End Sub