Rekurzivní procedury (Visual Basic)
Rekurzivní procedura je ta, která volá sama sebe. Obecně platí, že toto není nejúčinnější způsob psaní kódu jazyka Visual Basic.
Následující postup používá rekurze k výpočtu faktoriálu původního argumentu.
Function Factorial(n As Integer) As Integer
If n <= 1 Then
Return 1
End If
Return Factorial(n - 1) * n
End Function
Důležité informace o rekurzivních procedurách
Omezení podmínek. Je nutné navrhnout rekurzivní proceduru pro testování alespoň jedné podmínky, která může ukončit rekurze, a musíte také zpracovat případ, kdy není taková podmínka splněna v přiměřeném počtu rekurzivních volání. Bez alespoň jedné podmínky, která může být splněna bez selhání, váš postup spouští vysoké riziko spuštění v nekonečné smyčce.
Využití paměti. Aplikace má omezený prostor pro místní proměnné. Pokaždé, když procedura volá sama sebe, používá více místa pro další kopie místních proměnných. Pokud tento proces pokračuje po neomezenou dobu, nakonec způsobí StackOverflowException chybu.
Efektivita. Smyčku můžete téměř vždy použít místo rekurze. Smyčka nemá režii při předávání argumentů, inicializaci dalšího úložiště a vracení hodnot. Výkon může být mnohem lepší bez rekurzivních volání.
Vzájemná rekurze. Můžete sledovat velmi nízký výkon, nebo dokonce nekonečné smyčky, pokud se dva postupy vzájemně volají. Takový návrh představuje stejné problémy jako jeden rekurzivní postup, ale může být obtížnější rozpoznat a ladit.
Volání pomocí závorek Pokud se procedura Function
volá rekurzivně, musíte postupovat podle názvu procedury s závorky, i když neexistuje žádný seznam argumentů. V opačném případě se název funkce považuje za reprezentaci návratové hodnoty funkce.
Testování. Pokud napíšete rekurzivní proceduru, měli byste ji velmi pečlivě otestovat, abyste měli jistotu, že vždy splňuje určité omezující podmínky. Měli byste také zajistit, že kvůli příliš velkému počtu rekurzivních volání nemůžete dojít k nedostatku paměti.