Procedury rekurencyjne (Visual Basic)

A cykliczne procedura jest taki, który wywołuje sam siebie.Ogólnie rzecz biorąc, nie jest to najbardziej skutecznym sposobem napisania Visual Basic kodu.

Poniższa procedura używa rekursji do obliczania silni argumentu oryginalnego.

Function factorial(ByVal n As Integer) As Integer 
    If n <= 1 Then 
        Return 1
    Else 
        Return factorial(n - 1) * n
    End If 
End Function

Zagadnienia z procedurami cykliczne

Ograniczenie warunków.Należy zaprojektować badania dla co najmniej jeden warunek, który może obsłużyć rekursji procedury cykliczne i musi też obsłużyć sprawę, gdzie taki warunek nie jest spełnione w rozsądnej liczby wywołań cyklicznych.Bez co najmniej jeden warunek, że mogą być spełniane bez błędów procedura jest uruchamiana wysokiego ryzyka wykonywanych w nieskończoną pętlę.

Wykorzystanie pamięci.Aplikacja ma ograniczoną ilość miejsca dla zmiennych lokalnych.Przy każdym procedurę wywołuje sam siebie, używa więcej miejsca na dodatkowe kopie swoich zmiennych lokalnych.Jeśli ten proces jest kontynuowany przez czas nieokreślony, ostatecznie powoduje StackOverflowException błąd.

Wydajność.Prawie zawsze można podstawić pętli dla rekursji.Pętla ma dodatkowe obciążenie związane z przekazywaniem argumentów, inicjowanie dodatkowej pamięci i zwracanie wartości.Wydajność można znacznie lepiej bez wywołań cyklicznych.

Rekursja wzajemnego.Jeśli dwie procedury, wywołać wzajemnie może obserwować bardzo niską wydajność lub nawet nieskończoną pętlę.Taki projekt przedstawia takie same problemy jak procedura pojedynczego cykliczne, ale może być trudniejsza do wykrycia i debugowania.

Wywołanie z nawiasami okrągłymi.Gdy Function procedura wywołuje rekursywnie, należy wykonać nazwy procedury w nawiasach, nawet jeśli żadna lista argumentów.W przeciwnym razie nazwa funkcji jest pobierana, reprezentujące wartość zwracana funkcji.

Badania.Jeśli piszesz procedury cykliczne, należy przetestować go bardzo starannie do upewnij się, że spełnia pewne warunek ograniczający.Należy również upewnić, że nie można uruchomić z pamięć z powodu zbyt wiele wywołań cyklicznych.

Zobacz też

Zadania

Procedury rozwiązywania problemów (Visual Basic)

Rozwiązywanie problemów z wyjątkami: System.StackOverflowException

Informacje

StackOverflowException

Koncepcje

Procedury w Visual Basic

Sub — Procedury (Visual Basic)

Procedury funkcji (Visual Basic)

Procedury własności (Visual Basic)

Procedury operatorów (Visual Basic)

Parametry i argumenty procedur (Visual Basic)

Przeciążanie procedury (Visual Basic)

Struktury pętli (Visual Basic)