Rekurze JavaScriptu (s příklady)

V tomto kurzu se naučíte o rekurzi v JavaScriptu pomocí příkladů.

Rekurze je proces, který si říká sám. Funkce, která se sama nazývá, se nazývá rekurzivní funkce.

Syntaxe rekurzivní funkce je:

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

Zde je recurse()funkce rekurzivní funkcí. Volá se uvnitř funkce.

Práce s rekurzí v JavaScriptu

Rekurzivní funkce musí mít podmínku, aby se přestala volat sama. V opačném případě se funkce nazývá neurčitě.

Jakmile je podmínka splněna, funkce se přestane volat sama. Tomu se říká základní podmínka.

Chcete-li zabránit nekonečné rekurzi, můžete použít příkaz if… else (nebo podobný přístup), kde jedna větev provádí rekurzivní volání a druhá nikoli.

Obecně to tedy vypadá takto.

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

Jednoduchým příkladem rekurzivní funkce by bylo odpočítávání hodnoty na 1.

Příklad 1: Tisk čísel

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

Výstup

 4 3 2 1

Ve výše uvedeném programu uživatel při volání funkce předá číslo jako argument.

V každé iteraci se hodnota čísla sníží o 1 a funkce countDown()se volá, dokud není číslo kladné. Tady newNumber> 0je základní podmínka.

Toto rekurzivní volání lze vysvětlit v následujících krocích:

 countDown (4) vytiskne 4 a volání countDown (3) countDown (3) vytiskne 3 a volání countDown (2) countDown (2) vytiskne 2 a volání countDown (1) countDown (1) vytiskne 1 a volání countDown (0)

Když číslo dosáhne 0 , je splněna základní podmínka a funkce již není volána.

Příklad 2: Najít faktoriál

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

Výstup

 Faktoriál 3 je 6

Když zavoláte funkci factorial()s kladným celým číslem, rekurzivně se zavolá snížením počtu.

Tento proces pokračuje, dokud se číslo nestane 1 . Když číslo dosáhne 0 , vrátí se 1 .

Práce s rekurzí JavaScriptu ve faktoriálu

Toto rekurzivní volání lze vysvětlit v následujících krocích:

 faktoriál (3) vrátí 3 * faktoriál (2) faktoriál (2) vrátí 3 * 2 * faktoriál (1) faktoriál (1) vrátí 3 * 2 * 1 * faktoriál (0) faktoriál (0) vrátí 3 * 2 * 1 * 1

Zajímavé články...