funcția recursivă JavaScript
rezumat: în acest tutorial, veți învăța cum să utilizați tehnica recursivă pentru a dezvolta o funcție recursivă JavaScript, care este o funcție care se numește.
Introducere în funcțiile recursive JavaScript
o funcție recursivă este o funcție care se numește până când nu. și această tehnică se numește recursivitate.
Să presupunem că aveți o funcție numitărecurse()
recurse()
este o funcție recursivă dacă se numește în interiorul corpului său, astfel:
Code language: JavaScript (javascript)function recurse() { // ... recurse(); // ...}
o funcție recursivă are întotdeauna o condiție de a nu se mai numi, altfel se va numi pe termen nelimitat. Deci, o funcție recursivă arată de obicei după cum urmează:
Code language: JavaScript (javascript)function recurse() { if(condition) { // stop calling itself //... } else { recurse(); }}
În general, funcțiile recursive sunt folosite pentru a descompune o mare problemă în altele mai mici. Puteți găsi că acestea sunt puternic utilizate în structurile de date, cum ar fi arbori binare și grafice și algoritmi, cum ar fi Căutare binară și quicksort.
JavaScript Exemple de funcții recursive
să luăm câteva exemple de utilizare a funcțiilor recursive.
1) Un exemplu simplu de funcție recursivă JavaScript
Să presupunem că aveți nevoie pentru a dezvolta o funcție care contează în jos de la un număr specificat la 1. De exemplu, pentru a conta în jos de la 10 la 1:
321
următoarele arată countDown()
funcție:
Code language: JavaScript (javascript)function countDown(fromNumber) { console.log(fromNumber);}countDown(3);
Acest countDown(3)
arată doar numărul 3.
pentru a conta în jos de la numărul 3 la 1, puteți:
- arată numărul 3.
- și apelați
countDown(2)
care arată numărul 2. - și apelați
countDown(1)
care arată numărul 1.
următoarele modificări countDown()
la o funcție recursivă:
acest countDown(3)
va rula până când dimensiunea stivei de apeluri este depășită, astfel:
Code language: JavaScript (javascript)Uncaught RangeError: Maximum call stack size exceeded.
… deoarece nu are condiția de a nu te mai suna.
numărătoarea inversă se va opri când următorul număr este zero, prin urmare, adăugăm o condiție if după cum urmează:
ieșire:
321
countDown()
pare să funcționeze conform așteptărilor.
cu toate acestea, după cum sa menționat în tutorialul de tip Funcție, numele funcției este o referință la obiectul funcției reale.
dacă undeva în cod, numele funcției este setat la null, funcția recursivă va înceta să funcționeze.
de exemplu, următorul cod va avea ca rezultat o eroare:
Code language: JavaScript (javascript)let newYearCountDown = countDown;// somewhere in the codecountDown = null;// the following function call will cause an errornewYearCountDown(10);
eroare:
Code language: JavaScript (javascript)Uncaught TypeError: countDown is not a function
cum funcționează scriptul:
- mai întâi, atribuiți numele funcției
countDown
variabileinewYearCountDown
. - în al doilea rând, setați
countDown
referință funcție lanull
. - în al treilea rând, apelați funcția
newYearCountDown
.
codul provoacă o eroare deoarece corpul funcțieicountDown()
face referire la numele funcțieicountDown
care a fost setat lanull
în momentul apelării funcției.
pentru a remedia problema, puteți utiliza o expresie funcție numită după cum urmează:
2) calculați suma cifrelor unui număr exemplu
dat fiind un număr de exemplu, 324, calculați suma cifrelor 3 + 2 + 4 = 9.
pentru a aplica tehnica recursivă, puteți utiliza următorii pași:
f(324) = 4 + f(32)f(32) = 2 + f(3)f(3) = 3 + 0 (stop here)
deci
f(324) = 4 + f(32) f(324) = 4 + 2 + f(3) f(324) = 4 + 2 + 3
următoarele ilustrează sumOfDigits()
funcția recursivă:
cum funcționează:
rezumat
- o funcție recursivă este o funcție care se autointitulează până când nu
- o funcție recursivă are întotdeauna o condiție care oprește funcția să se autointituleze.
- a fost util acest tutorial ?
- YesNo