2012-06-20 4 views
7

반복합니다. 그래서이 방법을 만들었습니다 :무제한 나는 이런 식으로 뭔가를 실행하려면

'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"값을 상위 레벨에서 검색하는 가장 좋은 방법은 무엇입니까? 어레이에 보관해야합니까? 아니면이 문제에 접근하는 완전히 다른 방법이 있습니까?

답변

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) 
+0

'깊이'는 반복에서 반복으로 바뀌지 않으므로 루프 외부에서 'If'를 이동해야합니다. 이 변경은 필자의 대답에서 설명한 재귀 함수의 표준 레이아웃으로 이동하게합니다. – dasblinkenlight

0

Iterate()에 매개 변수로 배열이나 유사한 구조를 추가하고 Iterate()을 호출 할 때마다 i의 현재 값을 배열에 추가 할 수 있습니다.

따라서 루프의 깊이와 "상위"루프의 현재 값을 알 수 있습니다.

관련 문제