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.
![](https://cdn.wiki-base.com/6132116/javascript_recursion_with_examples.png.webp)
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> 0
on 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.
![](https://cdn.wiki-base.com/6132116/javascript_recursion_with_examples_2.png.webp)
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