Rýchla rekurzia (s príkladmi)

V tomto článku sa naučíte vytvárať rekurzívne funkcie; funkcia, ktorá si hovorí.

Funkcia, ktorá si hovorí, je známa ako rekurzívna funkcia. A táto technika je známa ako rekurzia. Pri vytváraní rekurzívnej funkcie musíte vytvoriť podmienku, aby sa funkcia nenazývala donekonečna (nekonečne).

Ako funguje rekurzia v Swifte?

 func recurse () (// príkazy recurse ()) recurse () 

Obrázok nižšie ukazuje, ako funguje rekurzia, keď sa volá znova a znova.

Vo vyššie uvedenom vývojovom diagrame sa rekurzia vykonáva nekonečne. Takmer vždy však vytvoríte rekurziu, ktorá sa vykoná, kým nebude splnená niektorá podmienka.

Aby ste zabránili nekonečnej rekurzii, použite rekurzívne volanie vo vnútri príkazov Swift Conditional Statements, napr. If … else.

Príklad 1: Vytlačte N kladných čísel

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

Keď spustíte nasledujúci program, výstup bude:

 Odpočítavanie: 3 2 1 0

Vo vyššie uvedenom programe má výpis print("Countdown:")výstupy Countdown: v konzole. A vyhlásenie countDownToZero(num:3)volá funkciu, ktorá berie parameter Integer.

Príkaz vo vnútri funkcie sa countDownToZero()vykoná a ak je podmienka num> 0splnená, funkcia countDownToZero()sa zavolá znova ako countDownToZero(num: num - 1).

Ak podmienka nie je splnená, volanie funkcie sa neurobí a rekurzia sa zastaví.

Pozrime sa na to v krokoch

Kroky vykonania
Kroky Volanie funkcie Vytlačené počet> 0?
1 countDownToZero(3) 3 Áno
2 countDownToZero(2) 2 Áno
3 countDownToZero(1) 1 Áno
4 countDownToZero(0) 0 Nie (končí)

Príklad 2: Nájdite faktoriál čísla

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

Keď spustíte nasledujúci program, výstup bude:

 Faktoriál 4 je 24

Ako funguje tento príklad?

Pozrime sa na to v krokoch

Kroky vykonania
Kroky Argument prešiel Vyhlásenie o vrátení tovaru Hodnota
1 4 return 4 * factorial(of:3) 4 * faktoriál (z: 3)
2 3 return 3 * factorial(of:2) 4 * 3 * faktoriál (z: 2)
3 2 return 2 * factorial(of:1) 4 * 3 * 2 * faktoriál (z: 1)
4 1 return 1 4 * 3 * 2 * 1

Rekurzia sa zvyčajne používa ako náhrada iterácie, keď riešenie problému možno nájsť asi v dvoch krokoch. Prvý krok hľadá riešenie, ak nie opakuje postup.

Zaujímavé články...