Rask rekursjon (med eksempler)

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> 0er 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øringstrinn
Fremgangsmå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øringstrinn
Fremgangsmå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.

Interessante artikler...