Articles

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:

function recurse() { // ... recurse(); // ...}
Code language: JavaScript (javascript)

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ă:

function recurse() { if(condition) { // stop calling itself //... } else { recurse(); }}
Code language: JavaScript (javascript)

Î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:

function countDown(fromNumber) { console.log(fromNumber);}countDown(3);
Code language: JavaScript (javascript)

Acest countDown(3) arată doar numărul 3.

pentru a conta în jos de la numărul 3 la 1, puteți:

  1. arată numărul 3.
  2. și apelațicountDown(2) care arată numărul 2.
  3. și apelațicountDown(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:

Uncaught RangeError: Maximum call stack size exceeded.
Code language: JavaScript (javascript)

… 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:

let newYearCountDown = countDown;// somewhere in the codecountDown = null;// the following function call will cause an errornewYearCountDown(10);
Code language: JavaScript (javascript)

eroare:

Uncaught TypeError: countDown is not a function
Code language: JavaScript (javascript)

cum funcționează scriptul:

  • mai întâi, atribuiți numele funcțieicountDown variabileinewYearCountDown.
  • în al doilea rând, setațicountDown 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