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> 0
teljesü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ésekLé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ésekLé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.