Rekurzija JavaScript (s primeri)

V tej vadnici boste s pomočjo primerov izvedeli o rekurziji v JavaScript.

Rekurzija je proces samopoklica. Funkcija, ki se sama pokliče, se imenuje rekurzivna funkcija.

Sintaksa rekurzivne funkcije je:

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

Tu je recurse()funkcija rekurzivna funkcija. Kliče se znotraj funkcije.

Delovanje rekurzije v JavaScript

Rekurzivna funkcija mora imeti pogoj, da neha klicati samega sebe. V nasprotnem primeru se funkcija pokliče za nedoločen čas.

Ko je pogoj izpolnjen, funkcija preneha sama klicati. To se imenuje osnovni pogoj.

Da bi preprečili neskončno rekurzijo, lahko uporabite stavek if … else (ali podoben pristop), kjer ena veja izvede rekurzivni klic, druga pa ne.

Torej, na splošno izgleda tako.

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

Preprost primer rekurzivne funkcije bi bil odštevanje vrednosti do 1.

Primer 1: Natisni številke

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

Izhod

 4 3 2 1

V zgornjem programu uporabnik pri klicanju funkcije kot argument posreduje številko.

V vsaki ponovitvi se vrednost števila zmanjša za 1 in funkcija countDown()se prikliče, dokler število ni pozitivno. Tukaj newNumber> 0je osnovni pogoj.

Ta rekurzivni klic je mogoče razložiti v naslednjih korakih:

 countDown (4) natisne 4 in klice countDown (3) countDown (3) natisne 3 in klice countDown (2) countDown (2) natisne 2 in klice countDown (1) countDown (1) natisne 1 in klice countDown (0)

Ko število doseže 0 , je osnovni pogoj izpolnjen in funkcija se ne prikliče več.

Primer 2: Poiščite Factorial

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

Izhod

 Faktorial 3 je 6

Ko prikličete funkcijo factorial()s pozitivnim celim številom, se bo rekurzivno poklicala tako, da bo zmanjšala število.

Ta postopek se nadaljuje, dokler število ne postane 1 . Potem, ko število doseže 0 , se vrne 1 .

Delovanje rekurzije JavaScript v Factorialu

Ta rekurzivni klic je mogoče razložiti v naslednjih korakih:

 factorial (3) vrne 3 * factorial (2) factorial (2) vrne 3 * 2 * factorial (1) factorial (1) vrne 3 * 2 * 1 * factorial (0) factorial (0) vrne 3 * 2 * 1 * 1.

Zanimive Članki...