Articles

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:

function recurse() { // ... recurse(); // ...}
Code language: JavaScript (javascript)

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:

function recurse() { if(condition) { // stop calling itself //... } else { recurse(); }}
Code language: JavaScript (javascript)

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:

function countDown(fromNumber) { console.log(fromNumber);}countDown(3);
Code language: JavaScript (javascript)

Ez countDown(3) csak a 3-as szám.

a 3-tól 1-ig történő visszaszámláláshoz:

  1. mutassa meg a 3-as számot.
  2. és hívja acountDown(2) számot, amely a 2-es számot mutatja.
  3. és hívja acountDown(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:

Uncaught RangeError: Maximum call stack size exceeded.
Code language: JavaScript (javascript)

… 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:

let newYearCountDown = countDown;// somewhere in the codecountDown = null;// the following function call will cause an errornewYearCountDown(10);
Code language: JavaScript (javascript)

hiba:

Uncaught TypeError: countDown is not a function
Code language: JavaScript (javascript)

a szkript működése:

  • először rendelje hozzá acountDownfüggvény nevét anewYearCountDown változóhoz.
  • másodszor állítsa be acountDown függvény hivatkozástnull.
  • harmadszor hívja meg anewYearCountDown funkciót.

a kód hibát okoz, mert a countDown()függvény a countDownfü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