Articles

JavaScript Rekursiv Funksjon

Sammendrag: I denne opplæringen lærer du hvordan du bruker rekursjonsteknikken til å utvikle En JavaScript rekursiv funksjon, som er en funksjon som kaller seg selv.

Introduksjon Til JavaScript rekursive funksjoner

en rekursiv funksjon er en funksjon som kaller seg til den ikke gjør det. Og denne teknikken kalles rekursjon.

Anta at du har en funksjon kalt recurse()recurse() er en rekursiv funksjon hvis den kaller seg inne i kroppen, slik:

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

en rekursiv funksjon har alltid en betingelse for å slutte å kalle seg selv, ellers vil den kalle seg på ubestemt tid. Så en rekursiv funksjon ser vanligvis ut som følgende:

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

vanligvis brukes rekursive funksjoner til å bryte ned et stort problem i mindre. Du kan oppdage at de er tungt brukt i datastrukturer som binære trær og grafer og algoritmer som binær søk og quicksort.

JavaScript rekursive funksjon eksempler

La oss ta noen eksempler på bruk av rekursive funksjoner.

1) en Enkel JavaScript rekursiv funksjon eksempel

Anta at du trenger å utvikle en funksjon som teller ned fra et spesifisert tall til 1. For eksempel, for å telle ned fra 10 til 1:

321

følgende visercountDown() funksjon:

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

dette countDown(3) viser bare nummer 3.

for å telle ned fra tallet 3 til 1 kan du:

  1. vise tallet 3.
  2. og ring countDown(2) som viser nummer 2.
  3. og ring countDown(1) som viser nummer 1.

følgende endrercountDown() til en rekursiv funksjon:

DettecountDown(3) vil kjøre til anropsstakkstørrelsen overskrides, slik:

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

… fordi den ikke har betingelsen slutte å kalle seg selv.

nedtellingen stopper når neste tall er null, derfor legger vi til en if-betingelse som følger:

Utgang:

321

countDown() ser ut til å fungere som forventet.

som nevnt I Opplæringen Funksjonstype, er navnet på funksjonen en referanse til det faktiske funksjonsobjektet.

hvis et sted i koden, er funksjonsnavnet satt til null, vil den rekursive funksjonen slutte å fungere.

for eksempel vil følgende kode resultere i en feil:

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

Feil:

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

hvordan skriptet fungerer:

  • tilordne førstcountDown funksjonsnavnet til variabelen newYearCountDown.
  • for Det Andre, settcountDown funksjon referanse til null.
  • tredje, ringnewYearCountDown – funksjonen.

koden forårsaker en feil fordi kroppen tilcountDown() – funksjonen refererer tilcountDown – funksjonsnavnet som ble satt til null når funksjonen ble kalt.

for å fikse det, kan du bruke et navngitt funksjonsuttrykk som følger:

2) Beregn summen av sifre i et talleksempel

Gitt et tall, for eksempel 324, beregne summen av sifre 3 + 2 + 4 = 9.

for å bruke rekursiv teknikk, kan du bruke følgende trinn:

f(324) = 4 + f(32)f(32) = 2 + f(3)f(3) = 3 + 0 (stop here)

f(324) = 4 + f(32) f(324) = 4 + 2 + f(3) f(324) = 4 + 2 + 3

følgende illustrerer sumOfDigits() rekursiv funksjon:

slik fungerer det:

sammendrag

  • en rekursiv funksjon er en funksjon som kaller seg selv til den ikke gjør det
  • en rekursiv funksjon har alltid en betingelse som stopper funksjonen fra å kalle seg selv.
  • Var denne opplæringen nyttig ?
  • YesNo