JavaScript-rekursion (med eksempler)

I denne vejledning lærer du om rekursion i JavaScript ved hjælp af eksempler.

Rekursion er en proces med at kalde sig selv. En funktion, der kalder sig selv kaldes en rekursiv funktion.

Syntaksen for rekursiv funktion er:

 function recurse() ( // function code recurse(); // function code ) recurse();

Her er recurse()funktionen en rekursiv funktion. Det kalder sig inde i funktionen.

Arbejde med rekursion i JavaScript

En rekursiv funktion skal have en betingelse for at stoppe med at ringe til sig selv. Ellers kaldes funktionen på ubestemt tid.

Når betingelsen er opfyldt, stopper funktionen med at kalde sig selv. Dette kaldes en basistilstand.

For at forhindre uendelig rekursion kan du bruge if … else-udsagn (eller lignende tilgang), hvor den ene gren foretager det rekursive opkald, og den anden ikke gør det.

Så det ser generelt sådan ud.

 function recurse() ( if(condition) ( recurse(); ) else ( // stop calling recurse() ) ) recurse();

Et simpelt eksempel på en rekursiv funktion ville være at tælle værdien ned til 1.

Eksempel 1: Udskriv numre

 // 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);

Produktion

 4 3 2 1

I ovenstående program sender brugeren et nummer som et argument, når han ringer til en funktion.

I hver iteration reduceres talværdien med 1, og funktionen countDown()kaldes, indtil tallet er positivt. Her newNumber> 0er basistilstanden.

Dette rekursive opkald kan forklares i følgende trin:

 countDown (4) udskriver 4 og opkald countDown (3) countDown (3) udskriver 3 og opkald countDown (2) countDown (2) udskriver 2 og opkald countDown (1) countDown (1) udskriver 1 og opkald countDown (0)

Når tallet når 0 , er basisbetingelsen opfyldt, og funktionen kaldes ikke længere.

Eksempel 2: Find 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)`); )

Produktion

 Faktoren på 3 er 6

Når du kalder funktion factorial()med et positivt heltal, kalder det sig selv rekursivt ved at formindske antallet.

Denne proces fortsætter, indtil tallet bliver 1 . Så når antallet når op på 0 , 1 returneres.

Arbejde med JavaScript-rekursion i Factorial

Dette rekursive opkald kan forklares i følgende trin:

 fabrik (3) returnerer 3 * fabrik (2) fabrik (2) returnerer 3 * 2 * fabrik (1) fabrik (1) returnerer 3 * 2 * 1 * faktor (0) faktor (0) returnerer 3 * 2 * 1 * 1

Interessante artikler...