Brza rekurzija (s primjerima)

U ovom ćete članku naučiti stvoriti rekurzivnu funkciju; funkcija koja sebe naziva.

Funkcija koja sebe naziva poznata je kao rekurzivna funkcija. A, ova je tehnika poznata kao rekurzija. Dok stvarate rekurzivnu funkciju, morate stvoriti uvjet tako da se funkcija ne poziva unedogled (beskonačno).

Kako rekurzija djeluje u Swiftu?

 func repeatse () (// izjave repeatse ()) repeatse () 

Donja slika prikazuje kako rekurzija djeluje pozivanjem sebe iznova i iznova.

Na gornjem dijagramu toka, rekurzija se izvršava beskonačno. Međutim, gotovo u svim slučajevima stvorite rekurziju koja se izvršava sve dok se ne ispuni neki uvjet.

Da biste spriječili beskonačnu rekurziju, upotrijebite rekurzivni poziv unutar Swift uvjetnih izjava, npr. If … else naredbu.

Primjer 1: Ispišite N pozitivnih brojeva

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

Kada pokrenete sljedeći program, izlaz će biti:

 Odbrojavanje: 3 2 1 0

U gore navedenom programu, izjava print("Countdown:")izlazi Countdown: u konzoli. A izjava countDownToZero(num:3)poziva funkciju koja uzima parametar Integer.

Izvedba unutar funkcije countDownToZero()izvršava se i ako je uvjet num> 0zadovoljen, funkcija countDownToZero()se ponovno poziva kao countDownToZero(num: num - 1).

Ako uvjet nije zadovoljen, poziv funkcije nije gotov i rekurzija se zaustavlja.

Pogledajmo ovo u koracima

Koraci izvršenja
Koraci Poziv funkcije Tiskano num> 0?
1 countDownToZero(3) 3 Da
2 countDownToZero(2) 2 Da
3 countDownToZero(1) 1 Da
4 countDownToZero(0) 0 Ne (završava)

Primjer 2: Pronađite faktorijel broja

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

Kada pokrenete sljedeći program, izlaz će biti:

 Faktorijal broja 4 je 24

Kako ovaj primjer funkcionira?

Pogledajmo ovo u koracima

Koraci izvršenja
Koraci Argument je prošao Izjava o povratku Vrijednost
1 4 return 4 * factorial(of:3) Faktor s 4 * (od: 3)
2 3 return 3 * factorial(of:2) Faktorijel 4 * 3 * (od: 2)
3 2 return 2 * factorial(of:1) Faktorijal 4 * 3 * 2 * (od: 1)
4 1 return 1 4 * 3 * 2 * 1

Obično se rekurzija koristi kao zamjena iteracije kad se rješenje problema može pronaći u otprilike dva koraka. Prvi korak traži rješenje, ako ne i ponoviti postupak.

Zanimljivi članci...