Hitra rekurzija (z primeri)

V tem članku se boste naučili ustvariti rekurzivno funkcijo; funkcija, ki se sama pokliče.

Funkcija, ki se sama pokliče, je znana kot rekurzivna funkcija. Ta tehnika je znana kot rekurzija. Med ustvarjanjem rekurzivne funkcije morate ustvariti pogoj, tako da se funkcija ne kliče v nedogled (neskončno).

Kako deluje rekurzija v Swiftu?

 func repeatse () (// stavki repeatse ()) repeatse () 

Spodnja slika prikazuje, kako deluje rekurzija tako, da se vedno znova kliče.

V zgornjem diagramu poteka se rekurzija izvaja neskončno. Vendar skoraj v vseh primerih ustvarite rekurzijo, ki se izvede, dokler ni izpolnjen neki pogoj.

Če želite preprečiti neskončno rekurzijo, uporabite rekurzivni klic v pogojnih stavkih Swift, npr. If … else.

Primer 1: Natisnite N pozitivnih števil

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

Ko zaženete naslednji program, bo rezultat:

 Odštevanje: 3 2 1 0

V zgornjem programu vsebuje stavek print("Countdown:")izhoda Countdown: v konzoli. Stavek countDownToZero(num:3)pokliče funkcijo, ki sprejme parameter Integer.

Stavek znotraj funkcije se countDownToZero()izvrši in če je pogoj num> 0izpolnjen, se funkcija countDownToZero()ponovno pokliče kot countDownToZero(num: num - 1).

Če pogoj ni izpolnjen, klic funkcije ni končan in rekurzija se ustavi.

Poglejmo to v korakih

Izvedbeni koraki
Koraki Klic funkcije Natisnjeno num> 0?
1. countDownToZero(3) 3. Da
2. countDownToZero(2) 2. Da
3. countDownToZero(1) 1. Da
4. countDownToZero(0) 0 Ne (konča)

Primer 2: Poiščite faktorje številke

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

Ko zaženete naslednji program, bo rezultat:

 Faktor 4 je 24

Kako ta primer deluje?

Poglejmo to v korakih

Izvedbeni koraki
Koraki Argument je minil Izjava o vrnitvi Vrednost
1. 4. return 4 * factorial(of:3) Faktor 4 (od: 3)
2. 3. return 3 * factorial(of:2) Faktor * 4 * 3 * (od: 2)
3. 2. return 2 * factorial(of:1) Faktorja 4 * 3 * 2 * (od: 1)
4. 1. return 1 4 * 3 * 2 * 1

Običajno se rekurzija uporablja kot nadomestek ponovitve, kadar je rešitev problema mogoče najti v približno dveh korakih. Prvi korak poišče rešitev, če ne ponovite postopka.

Zanimive Članki...