Office中国论坛/Access中国论坛

标题: 请教如何将组合数字全部列出的问题! [打印本页]

作者: sxgaobo    时间: 2022-12-25 09:58
标题: 请教如何将组合数字全部列出的问题!
1、2、3,二位组合有12、13、23
1、2、3、4、5,三位的组合有123、124、125、134、135、145、234、235、245、345等
请教!如何用代码完全正确的列出?

作者: Henry D. Sy    时间: 2022-12-25 17:22
循环
作者: admin    时间: 2022-12-26 10:20
多个循环嵌套
作者: sxgaobo    时间: 2022-12-27 15:55
:(:o:(:o:(:o
作者: sxgaobo    时间: 2023-2-19 17:53
这是ChatGPT给的代码:
Public Sub ListCombinations(n As Integer, m As Integer)
    Dim a() As Integer
    ReDim a(1 To m)
    Combination 1, n, a, 1, m
End Sub
Private Sub Combination(t As Integer, n As Integer, a() As Integer, k As Integer, m As Integer)
    Dim i As Integer
    If k > m Then
        Debug.Print Join(a, " ")
        Exit Sub
    End If
    For i = t To n
        a(k) = i
        Combination i + 1, n, a, k + 1, m
    Next i
End Sub
运行报错!
       Debug.Print Join(a, " ")
“无效的过程调用或参数!”
改MsgBox也不行,请高手帮忙看看如何修改可以吗?


作者: roych    时间: 2023-2-20 04:51
sxgaobo 发表于 2023-2-19 17:53
这是ChatGPT给的代码:
Public Sub ListCombinations(n As Integer, m As Integer)
    Dim a() As Integ ...

修改如下:
  1. Public Sub ListCombinations(n As Integer, m As Integer)
  2.     Dim a() As Variant
  3.     ReDim a(1 To m)
  4.     Combination 1, n, a, 1, m
  5. End Sub
  6. Private Sub Combination(t As Integer, n As Integer, a() As Variant, k As Integer, m As Integer)
  7.     Dim i As Integer
  8.     If k > m Then
  9.         Debug.Print Join(a, " ")
  10.         Exit Sub
  11.     End If
  12.     For i = t To n
  13.         a(k) = i
  14.         Combination i + 1, n, a, k + 1, m
  15.     Next i
  16. End Sub


  17. Sub test()
  18.     ListCombinations 5, 3
  19. End Sub
复制代码
数组类型应该指定为变型,而不是整型。

作者: sxgaobo    时间: 2023-2-20 09:51
roych 发表于 2023-2-20 04:51
修改如下:
数组类型应该指定为变型,而不是整型。

搞定!谢谢高手出手




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3