I denne veiledningen vil du lære om rekursjon i JavaScript ved hjelp av eksempler.
Rekursjon er en prosess med å kalle seg selv. En funksjon som kaller seg selv kalles en rekursiv funksjon.
Syntaksen for rekursiv funksjon er:
function recurse() ( // function code recurse(); // function code ) recurse();
Her er recurse()
funksjonen en rekursiv funksjon. Det kaller seg selv inne i funksjonen.
![](https://cdn.wiki-base.com/6132116/javascript_recursion_with_examples.png.webp)
En rekursiv funksjon må ha en forutsetning for å slutte å ringe seg selv. Ellers kalles funksjonen på ubestemt tid.
Når betingelsen er oppfylt, slutter funksjonen å ringe seg selv. Dette kalles en basistilstand.
For å forhindre uendelig rekursjon, kan du bruke hvis … annet uttalelse (eller lignende tilnærming) der den ene grenen gjør det rekursive anropet, og den andre ikke gjør det.
Så det ser generelt slik ut.
function recurse() ( if(condition) ( recurse(); ) else ( // stop calling recurse() ) ) recurse();
Et enkelt eksempel på en rekursiv funksjon vil være å telle ned verdien til 1.
Eksempel 1: Skriv ut tall
// program to count down numbers to 1 function countDown(number) ( // display the number console.log(number); // decrease the number value const newNumber = number - 1; // base case if (newNumber> 0) ( countDown(newNumber); ) ) countDown(4);
Produksjon
4 3 2 1
I programmet ovenfor sender brukeren et nummer som et argument når han ringer til en funksjon.
I hver iterasjon reduseres tallverdien med 1 og funksjon countDown()
kalles til tallet er positivt. Her newNumber> 0
er grunntilstanden.
Denne rekursive samtalen kan forklares i følgende trinn:
countDown (4) skriver ut 4 og samtaler countDown (3) countDown (3) skriver ut 3 og samtaler countDown (2) countDown (2) skriver ut 2 og samtaler countDown (1) countDown (1) skriver ut 1 og samtaler countDown (0)
Når tallet når 0 , er grunnbetingelsen oppfylt, og funksjonen blir ikke kalt lenger.
Eksempel 2: Finn faktor
// program to find the factorial of a number function factorial(x) ( // if number is 0 if (x === 0) ( return 1; ) // if number is positive else ( return x * factorial(x - 1); ) ) const num = 3; // calling factorial() if num is non-negative if (num> 0) ( let result = factorial(num); console.log(`The factorial of $(num) is $(result)`); )
Produksjon
Fabrikken til 3 er 6
Når du kaller funksjon factorial()
med et positivt heltall, vil den rekursivt kalle seg selv ved å redusere antallet.
Denne prosessen fortsetter til tallet blir 1 . Så når antallet når 0 , 1 returneres.
![](https://cdn.wiki-base.com/6132116/javascript_recursion_with_examples_2.png.webp)
Denne rekursive samtalen kan forklares i følgende trinn:
fabrikk (3) returnerer 3 * fabrikk (2) fabrikk (2) returnerer 3 * 2 * fabrikk (1) fabrikk (1) returnerer 3 * 2 * 1 * fabrikk (0) fabrikk (0) returnerer 3 * 2 * 1 * 1