I denne artikkelen vil du lære å lage en rekursiv funksjon; en funksjon som kaller seg selv.
En funksjon som kaller seg selv er kjent som en rekursiv funksjon. Og denne teknikken er kjent som rekursjon. Mens du oppretter en rekursiv funksjon, må du opprette en tilstand slik at funksjonen ikke kaller seg på ubestemt tid (uendelig).
Hvordan fungerer rekursjon i Swift?
func recurse () (// uttalelser recurse ()) recurse ()
Figuren nedenfor viser hvordan rekursjon fungerer ved å kalle seg igjen og igjen.
I flytskjemaet ovenfor utføres rekursjonen uendelig. Imidlertid oppretter du nesten en gang en rekursjon som kjøres til noen vilkår er oppfylt.
For å forhindre uendelig rekursjon, bruk det rekursive anropet i Swift Conditional Statements, f.eks. Hvis … else-uttalelse.
Eksempel 1: Skriv ut N positive tall
func countDownToZero(num: Int) ( print(num) if num> 0 ( countDownToZero(num: num - 1) ) ) print("Countdown:") countDownToZero(num:3)
Når du kjører følgende program, vil utdataene være:
Nedtelling: 3 2 1 0
I det ovennevnte programmet print("Countdown:")
sender uttalelsen nedtelling: i konsollen. Og uttalelsen countDownToZero(num:3)
kaller funksjonen som tar en parameter Integer
.
Uttalelsen inne i funksjonen countDownToZero()
utføres, og hvis betingelsen num> 0
er oppfylt, countDownToZero()
kalles funksjonen igjen som countDownToZero(num: num - 1)
.
Hvis vilkåret ikke er oppfylt, blir ikke funksjonssamtalen fullført og rekursjonen stopper.
La oss se dette trinnvis
GjennomføringstrinnFremgangsmåte | Funksjonsanrop | Skrevet ut | num> 0? |
---|---|---|---|
1 | countDownToZero(3) | 3 | Ja |
2 | countDownToZero(2) | 2 | Ja |
3 | countDownToZero(1) | 1 | Ja |
4 | countDownToZero(0) | 0 | Nei (slutter) |
Eksempel 2: Finn et faktura av et tall
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 kjører følgende program, vil utdataene være:
Faktoren på 4 er 24
Hvordan dette eksemplet fungerer?
La oss se dette trinnvis
GjennomføringstrinnFremgangsmåte | Argumentet passerte | Returuttalelse | Verdi |
---|---|---|---|
1 | 4 | return 4 * factorial(of:3) | 4 * fabrikk (av: 3) |
2 | 3 | return 3 * factorial(of:2) | 4 * 3 * fabrikk (av: 2) |
3 | 2 | return 2 * factorial(of:1) | 4 * 3 * 2 * fabrikk (av: 1) |
4 | 1 | return 1 | 4 * 3 * 2 * 1 |
Vanligvis brukes rekursjon som erstatning for iterasjon når løsningen på et problem kan finnes i omtrent to trinn. Det første trinnet søker etter en løsning, hvis ikke gjenta prosessen.