Ātra rekursija (ar piemēriem)

Šajā rakstā jūs iemācīsities izveidot rekursīvu funkciju; funkcija, kas pati sevi sauc.

Funkcija, kas pati sevi sauc, ir pazīstama kā rekursīva funkcija. Šī metode ir pazīstama kā rekursija. Veidojot rekursīvo funkciju, jums ir jāizveido nosacījums, lai funkcija sevi nesauktu bezgalīgi (bezgalīgi).

Kā rekursija darbojas Swift?

 func recurse () (// paziņojumi recurse ()) recurse () 

Zemāk redzamais attēls parāda, kā darbojas rekursija, atkal un atkal sevi saucot.

Iepriekš minētajā plūsmas diagrammā rekursija tiek izpildīta bezgalīgi. Tomēr gandrīz visu laiku jūs izveidojat rekursiju, kas tiek izpildīta, līdz tiek izpildīti kādi nosacījumi.

Lai novērstu bezgalīgu rekursiju, izmantojiet rekursīvo zvanu Swift nosacījumu paziņojumos, piemēram, ja … cits.

1. piemērs: izdrukājiet N pozitīvus skaitļus

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

Palaižot šo programmu, izeja būs:

 Atskaite: 3 2 1 0

Iepriekš minētajā programmā paziņojums konsolē print("Countdown:")izvada Countdown:. Un paziņojums countDownToZero(num:3)izsauc funkciju, kas ņem parametru Integer.

Funkcijas iekšējais countDownToZero()izpildījums num> 0tiek izpildīts, un, ja nosacījums ir izpildīts, funkcija countDownToZero()tiek izsaukta vēlreiz kā countDownToZero(num: num - 1).

Ja nosacījums nav izpildīts, funkcijas izsaukums netiek veikts un rekursija tiek pārtraukta.

Apskatīsim to pa soļiem

Izpildes soļi
Soļi Funkcijas izsaukums Izdrukāts num> 0?
1 countDownToZero(3) 3
2 countDownToZero(2) 2
3 countDownToZero(1) 1
4 countDownToZero(0) 0 Nē (beidzas)

2. piemērs: atrodiet skaitļa faktoriālu

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

Palaižot šo programmu, izeja būs:

 4 faktori ir 24

Kā darbojas šis piemērs?

Apskatīsim to pa soļiem

Izpildes soļi
Soļi Arguments pieņemts Atgriešanās paziņojums Vērtība
1 4 return 4 * factorial(of:3) 4 * faktoriāls (no: 3)
2 3 return 3 * factorial(of:2) 4 * 3 * faktoriāls (no: 2)
3 2 return 2 * factorial(of:1) 4 * 3 * 2 * faktoriāls (no: 1)
4 1 return 1 4 * 3 * 2 * 1

Parasti rekursija tiek izmantota kā atkārtojuma aizstājēja, ja problēmas risinājumu var atrast aptuveni divos posmos. Pirmais solis meklē risinājumu, ja neatkārto procesu.

Interesanti raksti...