7

私はこのようなものを実行したい:

For a = 0 To 4
   For b = a To 4
      For c = b To 4
        Console.WriteLine(a & b & c)
      Next
   Next
Next

しかし、n個のループを互いに作成する必要があります。だから私はこのメソッドを作成しました:

'iFrom = 0; iTo = 4; Depth = 3(loop count);
Private Sub Iterate(ByVal iFrom As Integer, ByVal iTo As Integer, ByVal Depth As Integer)
    For i = iFrom To iTo
       If Depth - 1 > 0 Then Iterate(iFrom, iTo, Depth - 1)

       'Do stuff here
    Next
End Sub

より高いレベルから「i」値を取得する最良の方法は何ですか? それらを配列に格納する必要がありますか? または、この問題にアプローチするためのまったく異なる方法はありますか?

4

2 に答える 2

0

この方法で遊んだ後、私はついに解決策を見つけました。ここにあります:

Private Sub Iterate(ByVal iFrom As Integer, ByVal iTo As Integer, ByVal Depth As Integer, ByVal iValues As Integer())
    For i = iFrom To iTo
        iValues(Depth - 1) = i
        If Depth - 1 > 0 Then
            Iterate(i, iTo, Depth - 1, iValues)
        Else                
            'Do stuff, in this case print the current iValues
            Console.WriteLine(String.Join("", iValues.Select(Function(x) x.ToString).ToArray))                
        End If
    Next
    Console.WriteLine()
End Sub

'Usage:
Dim iValueArray(Depth) As Integer
Iterate(0, 1, 2, iValueArray)
于 2012-06-20T11:59:42.473 に答える
0

配列または同様の構造をパラメーターとして追加し、Iterate()呼び出しごとIterate()に現在の値をi配列に追加することができます。

したがって、ループの深さと「親」ループの現在の値を知ることができます。

于 2012-06-20T11:12:34.260 に答える