Hvordan Ring en subrutine Fra i seg selv i Visual Basic

Rekursjon er en av de mest kraftfulle ideer i hele informatikk. Ofte referert til som en "splitt og hersk" tilnærming til å løse problemer, kan rekursjon deg å løse et problem ved å løse en eller flere "mindre" versjoner av det samme problemet, og deretter gjøre en liten mengde ekstra eller å kombinere arbeid. På denne måten kan mange meget komplekse problemer løses med utrolig elegante algoritmer.

Bruksanvisning

1 Opprett en ny Visual Basic-funksjonen. For eksempel:

Funksjon gcd (ByVal x As Integer, ByVal y som heltall) As Integer
End Function

Denne funksjonen vil beregne største felles divisor av to tall.

2 Legg en test mellom funksjon og End Function linjer for å skille mellom "base case" og "rekursiv saken." Base tilfeller er svært viktig i rekursive funksjoner - uten en, vil koden vanligvis føre til en uendelig løkke, og sannsynligvis krasje programmet. For eksempel, base case for "gcd" -funksjonen ser slik ut:

Hvis y = 0 Then
'Dette vil være basistilfellet
Ellers
'Dette vil være den rekursive tilfellet
Slutt om

3 Legg en base case. Dette er verdien at funksjonen returnerer når den støter på et problem så liten at den ikke kan bryte det ned ytterligere. For "gcd" -funksjonen, ser det slik ut:

Returner x

4 Legg en rekursiv sak. Når din funksjon oppstår på nytt, påkaller den seg med et enklere problem som vil hjelpe den løse større problem. I tilfellet av "gcd" funksjonen, blir den enklere problemet valgt slik at resultatet er faktisk resultatet for hele komplekset problem. Det ser ut som dette:

Return gcd (y, x Mod y)

5 Test din funksjon. Det er alltid viktig å teste rekursive funksjoner ved hjelp av base case og noen rekursive tilfeller som input. Prøv å tenke på tester som kan være utenfor normen, slik som negative tall.

Hint

  • Noen ganger kan den rekursive funksjonen må løse flere enklere problemer for å bygge opp en løsning til et mer komplekst problem. Hvis dette er tilfelle, må du være oppmerksom på hastigheten på algoritmen - flere rekursjon kan ofte føre til svært treg løpetider.