Snabb rekursion (med exempel)

I den här artikeln lär du dig att skapa en rekursiv funktion; en funktion som kallar sig själv.

En funktion som kallar sig själv är känd som en rekursiv funktion. Och den här tekniken är känd som rekursion. När du skapar en rekursiv funktion måste du skapa ett villkor så att funktionen inte kallar sig på obestämd tid (oändligt).

Hur fungerar rekursion i Swift?

 func recurse () (// uttalanden recurse ()) recurse () 

Figuren nedan visar hur rekursion fungerar genom att kalla sig om och om igen.

I ovanstående flödesschema körs rekursion oändligt. Men nästan alla gånger skapar du en rekursion som körs tills något villkor är uppfyllt.

För att förhindra oändlig rekursion, använd det rekursiva samtalet i Swift villkorliga uttalanden, t.ex. om … annars uttalande.

Exempel 1: Skriv ut N positiva siffror

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

När du kör följande program blir resultatet:

 Nedräkning: 3 2 1 0

I ovanstående program matas print("Countdown:")ut Countdown: i konsolen. Och uttalandet countDownToZero(num:3)kallar funktionen som tar en parameter Integer.

Uttrycket inuti funktionen countDownToZero()körs och om villkoret num> 0är uppfyllt countDownToZero()kallas funktionen igen som countDownToZero(num: num - 1).

Om villkoret inte är uppfyllt görs inte funktionssamtalet och rekursionen stoppas.

Låt oss se detta i steg

Utförande steg
Steg Funktionssamtal Tryckt antal> 0?
1 countDownToZero(3) 3 Ja
2 countDownToZero(2) 2 Ja
3 countDownToZero(1) 1 Ja
4 countDownToZero(0) 0 Nej (slutar)

Exempel 2: Hitta ett faktum för ett nummer

 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)") 

När du kör följande program blir resultatet:

 Faktorn 4 är 24

Hur fungerar detta exempel?

Låt oss se detta i steg

Utförande steg
Steg Argumentet passerade Returuttalande Värde
1 4 return 4 * factorial(of:3) 4 * fabrik (av: 3)
2 3 return 3 * factorial(of:2) 4 * 3 * fabrik (av: 2)
3 2 return 2 * factorial(of:1) 4 * 3 * 2 * fabrik (av: 1)
4 1 return 1 4 * 3 * 2 * 1

Vanligtvis används rekursion som ersättning för iteration när lösningen på ett problem kan hittas i ungefär två steg. Det första steget söker efter en lösning, om inte upprepa processen.

Intressanta artiklar...