Sdílet prostřednictvím


Rekurzivní procedury (Visual Basic)

A rekurzivní postup je takový, který volá sám sebe.Obecně není nejefektivnější způsob zápisu Visual Basic kód.

Následující postup používá rekurzi k výpočet faktoriálu jeho původní argument.

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

Důležité informace o rekurzivní postupy

Omezující podmínky.Je třeba navrhnout rekurzivní postup testování pro nejméně jednu podmínku, která může ukončit rekurze a musí také zpracování případu, kde žádná taková podmínka splněna během přiměřeného počtu rekurzivní volání.Bez alespoň jedna podmínka, která mohou být splněny bez selhání procedury spustí vysoké riziko v nekonečné smyčce.

Využití paměti.Aplikace má omezené množství místa pro lokální proměnné.Při každém volání procedury, používá více prostoru pro další kopie jeho místní proměnné.Pokud tento proces pokračuje po neomezenou dobu, nakonec způsobí StackOverflowException chyba.

Účinnost.Téměř vždy můžete nahradit opakování rekurze.Smyčka nemá režie předávání argumentů inicializace další úložiště a vrácení hodnoty.Výkon může být mnohem lépe bez rekurzivní volání.

Vzájemné rekurze.Velmi nízký výkon nebo dokonce nekonečné smyčce, může sledovat, dva postupy volání navzájem.Takový návrh představuje stejné problémy jako jediný rekurzivní postupu, ale může být těžší rozpoznat a ladění.

Volání pomocí závorek.Když Function volání procedur sám rekurzivně, je nutné postupovat podle název procedury závorky, i když žádný seznam argumentů.Jinak je přijata název funkce, které představují vrácená hodnota funkce.

Testování.Můžete psát rekurzivní postup, je vhodné jej otestovat velmi pečlivě zda že splňuje, aby některá omezující podmínku.Je třeba zajistit, že nelze spustit z paměti, protože mají příliš mnoho rekurzivní volání.

Viz také

Úkoly

Řešení potíží s procedurami (Visual Basic)

Řešení potíží s výjimkami: System.StackOverflowException

Referenční dokumentace

StackOverflowException

Koncepty

Procedury v jazyce Visual Basic

Sub – procedury (Visual Basic)

Procedury funkcí (Visual Basic)

Procedury vlastnosti (Visual Basic)

Procedury operátoru (Visual Basic)

Parametry a argumenty procedury (Visual Basic)

Procedura přetížení (Visual Basic)

Struktury smyčky (Visual Basic)