Gyors rekurzió (példákkal)

Ebben a cikkben megtanulja létrehozni a rekurzív függvényt; egy olyan funkció, amely önmagát hívja.

Az önmagát hívó függvény rekurzív függvényként ismert. Ezt a technikát rekurziónak nevezik. Rekurzív függvény létrehozása során létre kell hoznia egy feltételt, hogy a függvény ne hívja magát korlátlanul (végtelenül).

Hogyan működik a rekurzió Swiftben?

 func recurse () (// utasítások recurse ()) recurse () 

Az alábbi ábra megmutatja, hogyan működik a rekurzió azáltal, hogy újra és újra felhívja magát.

A fenti folyamatábrán a rekurzió végtelenül végrehajtódik. Azonban szinte minden alkalommal létrehoz egy rekurziót, amely addig hajt végre, amíg valamely feltétel nem teljesül.

A végtelen rekurzió megelőzéséhez használja a rekurzív hívást a Swift feltételes utasításokban, pl. Ha… más utasításban.

1. példa: N pozitív szám nyomtatása

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

A következő program futtatásakor a kimenet a következő lesz:

 Visszaszámlálás: 3 2 1 0

A fenti programban az utasítás a Countdown:print("Countdown:") kimenetet adja ki a konzolban. Az utasítás pedig meghívja azt a függvényt, amely paramétert vesz fel .countDownToZero(num:3)Integer

A függvényen belüli countDownToZero()utasítás végrehajtódik, és ha a feltétel num> 0teljesül, akkor a függvényt countDownToZero()ismételten meghívják countDownToZero(num: num - 1).

Ha a feltétel nem teljesül, a funkcióhívás nem történik meg, és a rekurzió leáll.

Lássuk ezt lépésenként

Végrehajtási lépések
Lépések Funkcióhívás Nyomtatott szám> 0?
1 countDownToZero(3) 3 Igen
2 countDownToZero(2) 2 Igen
3 countDownToZero(1) 1 Igen
4 countDownToZero(0) 0 Nem (vége)

2. példa: Keresse meg a szám faktoriális értékét

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

A következő program futtatásakor a kimenet a következő lesz:

 A 4 tényezője 24

Hogyan működik ez a példa?

Lássuk ezt lépésenként

Végrehajtási lépések
Lépések Érvelés elfogadva Visszatérési nyilatkozat Érték
1 4 return 4 * factorial(of:3) 4 * faktoriális (3-ból)
2 3 return 3 * factorial(of:2) 4 * 3 * faktoriális (2-ből)
3 2 return 2 * factorial(of:1) 4 * 3 * 2 * faktoriális (1-ből)
4 1 return 1 4 * 3 * 2 * 1

Általában a rekurziót használják az iteráció helyettesítésére, amikor a probléma megoldását körülbelül két lépésben lehet megtalálni. Az első lépés megoldást keres, ha nem is, ismételje meg a folyamatot.

érdekes cikkek...