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:
Code language: JavaScript (javascript)function recurse() { // ... recurse(); // ...}
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:
Code language: JavaScript (javascript)function recurse() { if(condition) { // stop calling itself //... } else { recurse(); }}
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:
Code language: JavaScript (javascript)function countDown(fromNumber) { console.log(fromNumber);}countDown(3);
dette countDown(3)
viser bare nummer 3.
for å telle ned fra tallet 3 til 1 kan du:
- vise tallet 3.
- og ring
countDown(2)
som viser nummer 2. - 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:
Code language: JavaScript (javascript)Uncaught RangeError: Maximum call stack size exceeded.
… 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:
Code language: JavaScript (javascript)let newYearCountDown = countDown;// somewhere in the codecountDown = null;// the following function call will cause an errornewYearCountDown(10);
Feil:
Code language: JavaScript (javascript)Uncaught TypeError: countDown is not a function
hvordan skriptet fungerer:
- tilordne først
countDown
funksjonsnavnet til variabelennewYearCountDown
. - for Det Andre, sett
countDown
funksjon referanse tilnull
. - tredje, ring
newYearCountDown
– 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)
Så
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