I denne artikel lærer du at oprette en rekursiv funktion; en funktion, der kalder sig selv.
En funktion, der kalder sig selv, er kendt som en rekursiv funktion. Og denne teknik er kendt som rekursion. Mens du opretter en rekursiv funktion, skal du oprette en betingelse, så funktionen ikke kalder sig uendelig (uendeligt).
Hvordan fungerer rekursion i Swift?
func recurse () (// udsagn recurse ()) recurse ()
Figuren nedenfor viser, hvordan rekursion fungerer ved at kalde sig igen og igen.
I ovenstående flowdiagram udføres rekursionen uendeligt. Imidlertid opretter du næsten alle gange en rekursion, der udføres, indtil en eller anden betingelse er opfyldt.
For at forhindre uendelig rekursion skal du bruge det rekursive opkald inde i Swift Conditional Statements, f.eks. Hvis … else-udsagn.
Eksempel 1: Udskriv N positive tal
func countDownToZero(num: Int) ( print(num) if num> 0 ( countDownToZero(num: num - 1) ) ) print("Countdown:") countDownToZero(num:3)
Når du kører følgende program, bliver output:
Nedtælling: 3 2 1 0
I ovenstående program print("Countdown:")
udsender erklæringen Countdown: i konsollen. Og erklæringen countDownToZero(num:3)
kalder den funktion, der tager en parameter Integer
.
Erklæringen inde i funktionen countDownToZero()
udføres, og hvis betingelsen num> 0
er opfyldt, countDownToZero()
kaldes funktionen igen som countDownToZero(num: num - 1)
.
Hvis betingelsen ikke er opfyldt, udføres funktionsopkaldet ikke, og rekursionen stopper.
Lad os se dette i trin
UdførelsestrinTrin | Funktionsopkald | Trykt | antal> 0? |
---|---|---|---|
1 | countDownToZero(3) | 3 | Ja |
2 | countDownToZero(2) | 2 | Ja |
3 | countDownToZero(1) | 1 | Ja |
4 | countDownToZero(0) | 0 | Nej (slutter) |
Eksempel 2: Find et nummer på et faktura
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ører følgende program, bliver output:
Faktoren på 4 er 24
Hvordan dette eksempel fungerer?
Lad os se dette i trin
UdførelsestrinTrin | Argumentet bestået | Returerklæring | Værdi |
---|---|---|---|
1 | 4 | return 4 * factorial(of:3) | 4 * fabrik (af: 3) |
2 | 3 | return 3 * factorial(of:2) | 4 * 3 * fabrik (af: 2) |
3 | 2 | return 2 * factorial(of:1) | 4 * 3 * 2 * fabrik (af: 1) |
4 | 1 | return 1 | 4 * 3 * 2 * 1 |
Normalt bruges rekursion som erstatning for iteration, når løsningen på et problem kan findes i omkring to trin. Det første trin søger efter en løsning, hvis ikke gentag processen.