Snelle recursie (met voorbeelden)

In dit artikel leer je hoe je een recursieve functie maakt; een functie die zichzelf aanroept.

Een functie die zichzelf aanroept, staat bekend als een recursieve functie. En deze techniek staat bekend als recursie. Bij het aanmaken van een recursieve functie moet u een voorwaarde aanmaken zodat de functie zichzelf niet voor onbepaalde tijd (oneindig) aanroept.

Hoe recursie werkt in Swift?

 func recurse () // statements recurse ()) recurse () 

De onderstaande figuur laat zien hoe recursie werkt door zichzelf keer op keer te bellen.

In het bovenstaande stroomdiagram wordt de recursie oneindig uitgevoerd. Bijna altijd creëert u echter een recursie die wordt uitgevoerd totdat aan een bepaalde voorwaarde is voldaan.

Om oneindige recursie te voorkomen, gebruikt u de recursieve aanroep in de Swift Conditional Statements, bijvoorbeeld if… else statement.

Voorbeeld 1: druk N positieve getallen af

 func countDownToZero(num: Int) ( print(num) if num> 0 ( countDownToZero(num: num - 1) ) ) print("Countdown:") countDownToZero(num:3) 

Als u het volgende programma uitvoert, is de uitvoer:

 Aftellen: 3 2 1 0

In het bovenstaande programma print("Countdown:")voert de instructie Countdown: uit in de console. En de instructie countDownToZero(num:3)roept de functie aan waaraan een parameter moet voldoen Integer.

De instructie binnen de functie wordt countDownToZero()uitgevoerd en als aan de voorwaarde num> 0is voldaan, wordt de functie countDownToZero()opnieuw aangeroepen als countDownToZero(num: num - 1).

Als niet aan de voorwaarde is voldaan, wordt de functieaanroep niet uitgevoerd en stopt de recursie.

Laten we dit in stappen bekijken

Uitvoeringsstappen
Stappen Functie-oproep Gedrukt aantal> 0?
1 countDownToZero(3) 3 Ja
2 countDownToZero(2) 2 Ja
3 countDownToZero(1) 1 Ja
4 countDownToZero(0) 0 Nee (eindigt)

Voorbeeld 2: vind de faculteit van een getal

 func factorial(of num: Int) -> Int ( if num == 1 ( return 1 ) else ( return num * factorial(of:num - 1) ) ) let x = 4 let result = factorial(of: x) print("The factorial of (x) is (result)") 

Als u het volgende programma uitvoert, is de uitvoer:

 De faculteit van 4 is 24

Hoe dit voorbeeld werkt?

Laten we dit in stappen bekijken

Uitvoeringsstappen
Stappen Het argument is voorbij Retourverklaring Waarde
1 4 return 4 * factorial(of:3) 4 * faculteit (van: 3)
2 3 return 3 * factorial(of:2) 4 * 3 * faculteit (van: 2)
3 2 return 2 * factorial(of:1) 4 * 3 * 2 * faculteit (van: 1)
4 1 return 1 4 * 3 * 2 * 1

Gewoonlijk wordt recursie gebruikt als vervanging van iteratie wanneer de oplossing voor een probleem in ongeveer twee stappen kan worden gevonden. De eerste stap zoekt een oplossing, zo niet, herhaal het proces.

Interessante artikelen...