2014-08-30 2 views
1

실행하는 동안 코드의 특정 부분을 건너 뛰는 데 문제가 있습니다. 턴 값이 9 안타 호출 함수/서브 플로우를 반환해야 후GoTo (재귀)를 사용하여 코드 건너 뛰기

Dim turn as Integer = 1 

Function recurs1() 

    If turn = 9 Then 
     GoTo Endline 
    End If 

    For i = 0 To 5 
     For j = 0 To 5 
      If (arr(i, j) <> 10 And arr(i, j) <> 20) Then 
       If chance Mod 2 = 1 Then 
        MsgBox("Intialized (" & i & "," & j & ") To 10") 'Line X 
        arr(i, j) = 10 
       ElseIf chance Mod 2 = 0 Then 
        MsgBox("Intialized (" & i & "," & j & ") To 20") 'Line Y 
        arr(i, j) = 20 
       End If 
       turn += 1 'Updating turn 
       recurs1() 'Recursion takes place here 
      End If 
     Next 
    Next 

Endline: 

    Return Nothing 

End Function 

내 이해에 따르면, 코드 배열에 값을 할당 중지한다. 그러나 값을 계속 지정하고 선의 값에 따라 선 X 또는 선 Y가 인쇄됩니다. 허용 된 경우

는 37

까지 차례로 단위의 값은 내가 확실히 나보다 코드의 깊은 이해를 가진 사람에서이 문제에 어떤 도움을 주셔서 감사합니다 것입니다.

대단히 감사합니다.

+0

왜 SQL 주석 구문을 사용합니까? –

+0

오류입니다. 댓글이 더 분명해졌습니다. 나는 단지 여기에 그것을 두었다. 상위 코드에는 없습니다. – Jackdaw

+1

'Go To'는 싫고, 'turn = 9'에서는 코드가 멈추지 않을 것입니다. 'recurs1() '함수를 호출 할 때 turn = 9 일 때만 멈추게됩니다. – bansi

답변

1

두 개의 for 루프 안에 재귀 호출을 배치했습니다. 이 함수는 turn = 9가 될 때까지 재귀 적으로 호출 될 것입니다.하지만 리턴 할 때 루프에서 여전히 더 이상 확인하지 않고 증가 할 것입니다. 아마 재귀 함수를 호출하기 전에 턴의 값을 확인하면 더 잘 작동 할 것입니다 (이 방법으로 GoTo도 제거합니다).

+0

완벽한, 감사합니다. – Jackdaw

0

Goto Endline이있는 곳에서 Return Nothing을 사용하지 않는 이유는 무엇입니까? return은 내 지식이있는 한 함수의 실행을 멈춘다. 그렇게하면 지저분한 Goto 명령을 제거 할 수 있습니다 (코드가 복잡하고 버그가있을 수 있습니다).

+0

다른 옵션이 없으면 GoTos를 사용하여 문제를 해결하는 것이 바람직하지 않다고 생각했습니다. 고마워. 고마워. – Jackdaw

관련 문제