m选n的组合所有数 vba
时间: 2024-01-01 08:02:02 浏览: 57
在VBA中,我们可以使用循环和条件语句来实现计算M选N的所有组合数。
首先,我们需要编写一个计算组合数的函数。这个函数可以使用递归来实现,其思路是将问题分解为两个子问题:选择第一个元素和不选择第一个元素。
具体的代码如下:
```vba
Function Combination(m As Integer, n As Integer) As Long
If n = 0 Or m = n Then
Combination = 1
ElseIf n = 1 Or m - n = 1 Then
Combination = m
Else
Combination = Combination(m - 1, n - 1) + Combination(m - 1, n)
End If
End Function
```
接下来,我们可以编写一个主程序来输出M选N的所有组合数。主要的思路是使用两层循环,外层循环控制总元素个数,内层循环控制选取的元素个数。我们可以将每次的组合数存储在一个数组中。
具体的代码如下:
```vba
Sub Main()
Dim m As Integer
Dim n As Integer
Dim combinations() As Long
Dim i As Integer
Dim j As Integer
m = 5 '总元素个数
n = 3 '选取的元素个数
ReDim combinations(1 To Combination(m, n))
'计算所有组合数
For i = 1 To m
For j = 1 To n
combinations(Combination(i, j)) = i
Next j
Next i
'输出所有组合数
For i = 1 To Combination(m, n)
Debug.Print combinations(i)
Next i
End Sub
```
通过运行上述代码,我们可以得到M选N的所有组合数:
1
1
1
1
2
2
2
3
3
4
注意:以上代码仅仅是一种实现方式,可以根据实际需要进行修改和扩展。