JavaScript rekurzív funkció
összefoglaló: ebben az oktatóanyagban megtudhatja, hogyan kell használni a rekurziós technikát egy JavaScript rekurzív funkció kifejlesztésére, amely egy olyan funkció, amely önmagát hívja.
Bevezetés a JavaScript rekurzív függvényekbe
a rekurzív függvény egy olyan függvény, amely addig hívja magát, amíg nem. ezt a technikát rekurziónak nevezzük.
tegyük fel, hogy van egy recurse()
nevű függvénye. A recurse()
egy rekurzív függvény, Ha a testében hívja magát, így:
Code language: JavaScript (javascript)function recurse() { // ... recurse(); // ...}
a rekurzív függvénynek mindig van egy feltétele, hogy ne hívja magát, különben határozatlan ideig hívja magát. Tehát egy rekurzív függvény általában a következőképpen néz ki:
Code language: JavaScript (javascript)function recurse() { if(condition) { // stop calling itself //... } else { recurse(); }}
a rekurzív függvényeket általában arra használják, hogy egy nagy problémát kisebbekre bontsanak. Megállapíthatja, hogy ezeket erősen használják az adatstruktúrákban, mint a bináris fák és grafikonok és algoritmusok, mint például a bináris keresés és a quicksort.
JavaScript rekurzív függvény példák
Vegyünk néhány példát a rekurzív függvények használatára.
1) egy egyszerű JavaScript rekurzív függvény példa
tegyük fel, hogy olyan függvényt kell kifejlesztenie, amely egy megadott számról 1-re számol. Például 10-től 1-ig történő visszaszámláláshoz:
321
a következőkben látható a countDown()
függvény:
Code language: JavaScript (javascript)function countDown(fromNumber) { console.log(fromNumber);}countDown(3);
Ez countDown(3)
csak a 3-as szám.
a 3-tól 1-ig történő visszaszámláláshoz:
- mutassa meg a 3-as számot.
- és hívja a
countDown(2)
számot, amely a 2-es számot mutatja. - és hívja a
countDown(1)
számot, amely az 1-es számot mutatja.
A következő változások a countDown()
egy rekurzív függvény:
Ez countDown(3)
fog futni, amíg a hívás verem mérete túllépi, mint ez:
Code language: JavaScript (javascript)Uncaught RangeError: Maximum call stack size exceeded.
… mert nem rendelkezik azzal a feltétellel, hogy ne hívja magát.
a visszaszámlálás leáll, ha a következő szám nulla, ezért hozzáadunk egy if feltételt a következőképpen:
kimenet:
321
a countDown()
úgy tűnik, hogy a várt módon működik.
azonban, amint azt a Függvénytípus bemutatója említi, a függvény neve hivatkozás a tényleges függvényobjektumra.
ha valahol a kódban a függvény neve null értékre van állítva, a rekurzív függvény leáll.
például a következő kód hibát eredményez:
Code language: JavaScript (javascript)let newYearCountDown = countDown;// somewhere in the codecountDown = null;// the following function call will cause an errornewYearCountDown(10);
hiba:
Code language: JavaScript (javascript)Uncaught TypeError: countDown is not a function
a szkript működése:
- először rendelje hozzá a
countDown
függvény nevét anewYearCountDown
változóhoz. - másodszor állítsa be a
countDown
függvény hivatkozástnull
. - harmadszor hívja meg a
newYearCountDown
funkciót.
a kód hibát okoz, mert a countDown()
függvény a countDown
függvénynévre hivatkozik, amely a függvény hívásakor null
értékre lett állítva.
a javításhoz használhatja a nevezett függvény kifejezést az alábbiak szerint:
2) Számolja ki a számjegyek összegét példa
adott szám például 324, számolja ki a számjegyek összegét 3 + 2 + 4 = 9.
a rekurzív technika alkalmazásához a következő lépéseket használhatja:
f(324) = 4 + f(32)f(32) = 2 + f(3)f(3) = 3 + 0 (stop here)
So
f(324) = 4 + f(32) f(324) = 4 + 2 + f(3) f(324) = 4 + 2 + 3
az alábbiakban bemutatjuk a sumOfDigits()
rekurzív funkciót:
hogyan működik:
összegzés
- a rekurzív függvény olyan függvény, amely addig hívja magát, amíg nem
- a rekurzív függvénynek mindig van egy feltétele, amely megakadályozza a függvény hívását.
- hasznos volt ez a bemutató ?
- YesNo