递归结束自己

时间:2017-01-18 16:47:07

标签: vb.net recursion

我想在房间内搜索房间(我不知道房间里有多少房间)。

然后对于这个房间的每个房间我想再次搜索这些房间是否有房间等等(递归)。

但是如果房间深度达到X,那么如果没有房间,它应该停止/保存。我的代码基本上可以工作,但是当有更多房间时,它会覆盖房间。

所以假设房间A有两个房间1室和2室。然后我的功能将与1号房间一起工作,但忽略了2号房间,我不知道为什么。

    Private Class Room
    Public Name As String
    Public RoomCounter As Integer
End Class

Private Const _maxRooms As Integer = 2

Private Sub GetRoomsRecursive(pMatchString As String, pCurrentRound As Integer, pOriginalRoom As Room)

    Dim foundRooms As String = RoomsMatching(pMatchString)

    For Each s As String In foundRooms.Split(vbNewLine)
        If Not s.Contains(";") Then 'There are rooms in that room
            If pCurrentRound >= _maxRooms - 1 Then Continue For 'Don't search further

            If pOriginalRoom Is Nothing Then
                Dim tempRoom As New Room With {.Name = $"Room_{s}"}
                tempRoom.RoomCounter += 1
                GetRoomsRecursive(pMatchString, pCurrentRound + 1, tempRoom)
            Else
                If pOriginalRoom.RoomCounter = _maxRooms Then Continue For '
                pOriginalRoom.Name = $"Room_{s}" 'Override name
                pOriginalRoom.RoomCounter += 1
                GetRoomsRecursive(pMatchString, pCurrentRound + 1, pOriginalRoom)
                End If
            Else 'There are no more rooms
                 If pOriginalRoom Is Nothing Then
                    Dim tempRoom As New Room With {.Name = $"Room_{s}"}
                    tempRoom.RoomCounter += 1
                   'todo: save the room
                Else
                    If pOriginalRoom.RoomCounter = _maxRooms Then Continue For '
                    pOriginalRoom.Name = $"Room_{s}" 'Override name
                    pOriginalRoom.RoomCounter += 1
                    'todo: save the room
                End If
            End If
        Next
    End Sub

0 个答案:

没有答案