JavaScript-rekursion (med exempel)

I denna handledning lär du dig om rekursion i JavaScript med hjälp av exempel.

Rekursion är en process för att ringa sig själv. En funktion som kallar sig själv kallas en rekursiv funktion.

Syntaxen för rekursiv funktion är:

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

Här är recurse()funktionen en rekursiv funktion. Det kallar sig inuti funktionen.

Arbeta med rekursion i JavaScript

En rekursiv funktion måste ha ett villkor för att sluta ringa sig själv. I annat fall kallas funktionen på obestämd tid.

När villkoret är uppfyllt slutar funktionen att ringa sig själv. Detta kallas ett basvillkor.

För att förhindra oändlig rekursion kan du använda if … annars uttalande (eller liknande tillvägagångssätt) där en gren gör det rekursiva samtalet och den andra inte.

Så det ser generellt ut så här.

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

Ett enkelt exempel på en rekursiv funktion skulle vara att räkna ner värdet till 1.

Exempel 1: Skriv ut nummer

 // 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 ovanstående program skickar användaren ett nummer som ett argument när han anropar en funktion.

I varje iteration minskar talvärdet med 1 och funktionen countDown()anropas tills numret är positivt. Här newNumber> 0är grundvillkoret.

Detta rekursiva samtal kan förklaras i följande steg:

 countDown (4) skriver ut 4 och samtal countDown (3) countDown (3) skriver ut 3 och samtal countDown (2) countDown (2) skriver ut 2 och samtal countDown (1) countDown (1) skriver ut 1 och samtal countDown (0)

När talet når 0 uppfylls basvillkoret och funktionen kallas inte längre.

Exempel 2: Hitta 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

 Faktorn 3 är 6

När du ringer till funktion factorial()med ett positivt heltal kommer den rekursivt att ringa sig själv genom att minska antalet.

Denna process fortsätter tills siffran blir 1 . Sedan när antalet når 0 , 1 returneras.

Arbeta med JavaScript-rekursion i Factorial

Detta rekursiva samtal kan förklaras i följande steg:

 fabrik (3) returnerar 3 * fabrik (2) fabrik (2) returnerar 3 * 2 * fabrik (1) fabrik (1) returnerar 3 * 2 * 1 * faktoria (0) faktoria (0) returnerar 3 * 2 * 1 * 1

Intressanta artiklar...