În acest articol, veți învăța să creați o funcție recursivă; o funcție care se numește singură.
O funcție care se numește singură este cunoscută ca funcție recursivă. Și această tehnică este cunoscută sub numele de recursivitate. În timp ce creați o funcție recursivă, trebuie să creați o condiție, astfel încât funcția să nu se numească la infinit (infinit).
Cum funcționează recursivitatea în Swift?
func recurse () (// statement recurse ()) recurse ()
Figura de mai jos arată cum funcționează recursivitatea apelându-se mereu.
În diagrama de flux de mai sus, recursiunea se execută infinit. Cu toate acestea, aproape de fiecare dată, creați o recursivitate care se execută până când este îndeplinită o anumită condiție.
Pentru a preveni recursivitatea infinită, utilizați apelul recursiv din instrucțiunile condiționale Swift, de exemplu, dacă este … altă instrucțiune.
Exemplul 1: Imprimați N numere pozitive
func countDownToZero(num: Int) ( print(num) if num> 0 ( countDownToZero(num: num - 1) ) ) print("Countdown:") countDownToZero(num:3)
Când rulați următorul program, ieșirea va fi:
Numărătoarea inversă: 3 2 1 0
În programul de mai sus, declarația print("Countdown:")
generează Countdown: în consolă. Și declarația countDownToZero(num:3)
apelează funcția care ia un parametru Integer
.
Declarația din interiorul funcției countDownToZero()
execută și în cazul în care condiția num> 0
este îndeplinită, funcția countDownToZero()
este numit din nou ca countDownToZero(num: num - 1)
.
Dacă condiția nu este îndeplinită, apelul funcțional nu este efectuat și recursivitatea se oprește.
Să vedem acest lucru în pași
Etape de executarePași | Apel funcțional | Tipărit | num> 0? |
---|---|---|---|
1 | countDownToZero(3) | 3 | da |
2 | countDownToZero(2) | 2 | da |
3 | countDownToZero(1) | 1 | da |
4 | countDownToZero(0) | 0 | Nu (se termină) |
Exemplul 2: Găsiți factorialul unui număr
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)")
Când rulați următorul program, ieșirea va fi:
Factorialul de 4 este 24
Cum funcționează acest exemplu?
Să vedem acest lucru în pași
Etape de executarePași | Argumentul a trecut | Declarație de returnare | Valoare |
---|---|---|---|
1 | 4 | return 4 * factorial(of:3) | 4 * factorial (din: 3) |
2 | 3 | return 3 * factorial(of:2) | 4 * 3 * factorial (din: 2) |
3 | 2 | return 2 * factorial(of:1) | 4 * 3 * 2 * factorial (din: 1) |
4 | 1 | return 1 | 4 * 3 * 2 * 1 |
De obicei recursivitatea este utilizată ca înlocuire a iterației atunci când soluția la o problemă poate fi găsită în aproximativ doi pași. Primul pas caută o soluție, dacă nu repetați procesul.