Dim i As Integer
    Dim j As Integer
    Dim k As Integer
    Dim z As Integer
    Dim value As Integer
    Dim Numarr(3) As Integer
    Numarr(0) = 0: Numarr(1) = 30: Numarr(2) = 50: Numarr(3) = 100
    value = 310
    For i = 0 To 3
        For j = 0 To 3
            For k = 0 To 3
                For z = 0 To 3
                    If value = Numarr(i) + Numarr(j) + Numarr(k) Then
                        Debug.Print Numarr(i); Numarr(j); Numarr(k)
                    Else
                        Debug.Print Numarr(i); Numarr(j); Numarr(k)
                    End If
                Next
            Next
        Next
    Next这是利用枚举所有组合来匹配特定的数,但是现在有一个问题,我的数组换成动态的,也就没有办法知道要嵌套几层循环,所以上方法行不通了。问:怎么在动态数组的情况下枚举所有组合呢?

解决方案 »

  1.   

    仔细看来看
    If value = Numarr(i) + Numarr(j) + Numarr(k) Then
                            Debug.Print Numarr(i); Numarr(j); Numarr(k)
                        Else
                            Debug.Print Numarr(i); Numarr(j); Numarr(k)
                        End If什么意思?两种情况有区别吗?
      

  2.   

    这个是测试用的。怎么递归呀?我也觉得是要用递归,但思想没到位。helper~
      

  3.   

    递归就是自己调用自己
    一个计算a*(a-1)*(a-2)*....*2*1的例子
    function abc(a as integer)as longc
    if a=1 then 
      abc=1 
    else 
      abc=abc(a-1)*a
    end if
    end function