JavaScript-rekursio (esimerkkejä)

Tässä opetusohjelmassa opit JavaScriptin rekursiosta esimerkkien avulla.

Rekursio on prosessi itsensä kutsumiseksi. Funktiota, joka kutsuu itseään, kutsutaan rekursiiviseksi funktioksi.

Rekursiivisen funktion syntakse on:

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

Tässä recurse()funktio on rekursiivinen funktio. Se kutsuu itseään toiminnon sisään.

Rekursio toimii JavaScriptissä

Rekursiivisella toiminnolla on oltava ehto lopettaa itsensä kutsuminen. Muussa tapauksessa toimintoa kutsutaan loputtomiin.

Kun ehto täyttyy, toiminto lopettaa itsensä kutsumisen. Tätä kutsutaan perusedellytykseksi.

Voit estää ääretön rekursio käyttämällä if… else -lauseketta (tai vastaavaa lähestymistapaa), jossa yksi haara tekee rekursiivisen puhelun ja toinen ei.

Joten se näyttää yleensä tältä.

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

Yksinkertainen esimerkki rekursiivisesta funktiosta olisi laskea arvo yhteen.

Esimerkki 1: Tulosta numerot

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

Tuotos

 4 3 2 1

Yllä olevassa ohjelmassa käyttäjä välittää numeron argumenttina soittaessaan toimintoa.

Kussakin iteraatiossa numeron arvoa pienennetään yhdellä ja toimintoa countDown()kutsutaan, kunnes luku on positiivinen. Tässä newNumber> 0on perusedellytys.

Tämä rekursiivinen puhelu voidaan selittää seuraavissa vaiheissa:

 countDown (4) tulostaa 4 ja puhelut countDown (3) countDown (3) tulostaa 3 ja puhelut countDown (2) countDown (2) tulostaa 2 ja puhelut countDown (1) countDown (1) tulostaa 1 ja puhelut countDown (0)

Kun numero saavuttaa nollan , perusedellytys täyttyy eikä funktiota kutsuta enää.

Esimerkki 2: Etsi 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)`); )

Tuotos

 3: n kerroin on 6

Kun kutsut funktion factorial()positiivisella kokonaisluvulla, se kutsuu itseään rekursiivisesti vähentämällä lukua.

Tätä prosessia jatketaan, kunnes luvusta tulee 1 . Sitten kun luku saavuttaa 0 , 1 palautetaan.

JavaScript-rekursio toimii Factorialissa

Tämä rekursiivinen puhelu voidaan selittää seuraavissa vaiheissa:

 factororial (3) palauttaa 3 * factororial (2) factororial (2) palauttaa 3 * 2 * factororial (1) factororial (1) palauttaa 3 * 2 * 1 * factororial (0) factororial (0) palauttaa 3 * 2 * 1 * 1

Mielenkiintoisia artikkeleita...