Hoe maak je een Routine Call vanuit zichzelf in Visual Basic

Recursie is een van de meest krachtige ideeën in alle van de informatica. Vaak aangeduid als een 'verdeel-en-heers "aanpak voor het oplossen van problemen, terugkeer kunt u een probleem op te lossen door het oplossen van één of meer" kleinere "versies van hetzelfde probleem, en dan het doen van een kleine hoeveelheid van de aanvullende of het combineren van werk. Zo kan een groot aantal zeer complexe problemen worden opgelost met ongelooflijk elegant algoritmen.

instructies

1 Maak een nieuwe Visual Basic-functie. Bijvoorbeeld:

Functie ggd (ByVal x As Integer, ByVal y als Integer) As Integer
end Function

Deze functie zal de grootste gemene deler van twee getallen berekenen.

2 Voeg een test tussen de functie en End Function lijnen om onderscheid te maken tussen de "base case" en de "recursieve geval is." Base gevallen zijn zeer belangrijk in recursieve functies - zonder dat de ene, zal uw code veroorzaken meestal een oneindige lus en waarschijnlijk crashen uw programma. Bijvoorbeeld, het basisscenario voor de functie "ggd" ziet er als volgt uit:

Als y = 0 Then
'Dit zal de basis geval zijn
Anders
Dit zal het geval zijn recursieve
Stop als

3 Voeg een base case. Dit is de waarde die uw functie geeft wanneer het een probleem zo klein dat het niet af te breken verder ontmoet. Voor de functie "ggd", ziet het er als volgt uit:

Terug x

4 Voeg een recursieve geval. Wanneer uw functie terugkeert, beroept zij zich zelf met een eenvoudiger probleem dat zal helpen het grotere probleem op te lossen. Voor de functie "GCD", wordt het eenvoudiger probleem gekozen dat het resultaat is in feite het resultaat van het gehele complex probleem. Het ziet er als volgt uit:

Return ggd (y, x Mod y)

5 Test uw functie. Het is altijd belangrijk om recursieve functies met behulp van de base case en een aantal recursieve gevallen als input te testen. Probeer te denken van tests die buiten de norm zou kunnen zijn, zoals negatieve getallen.

Hints

  • Soms recursieve functie moeten verscheidene problemen eenvoudiger om het opbouwen van een oplossing voor een complex probleem. Als dit het geval is, rekening te houden met de snelheid van uw algoritme - meerdere recursie kan vaak leiden tot zeer traag looptijden.