Articles

JavaScript Rekurzivní Funkce

Shrnutí: v tomto tutoriálu, se dozvíte, jak používat rekurze techniku rozvíjet JavaScript rekurzivní funkce, což je funkce, která volá sama sebe.

Úvod do rekurzivních funkcí JavaScriptu

rekurzivní funkce je funkce, která se volá, dokud ne. a tato technika se nazývá rekurze.

Předpokládejme, že máte funkci nazvanou recurse()recurse() je rekurzivní funkci, pokud volá sama sebe uvnitř jejího těla, jako je tento:

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

rekurzivní funkce vždy má podmínku, aby přestal volat sám, jinak to bude volat donekonečna. Rekurzivní funkce tedy obvykle vypadá takto:

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

rekurzivní funkce se obecně používají k rozdělení velkého problému na menší. Zjistíte, že jsou silně používány v datových strukturách, jako jsou binární stromy a grafy a algoritmy, jako je binární vyhledávání a quicksort.

JavaScript příklady rekurzivní funkce

Vezměme si několik příkladů použití rekurzivní funkce.

1) jednoduchý příklad rekurzivní funkce JavaScriptu

Předpokládejme, že potřebujete vyvinout funkci, která odpočítává ze zadaného čísla na 1. Například, odpočítávat od 10 do 1:

321

následující příklad ukazuje countDown() funkce:

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

countDown(3) zobrazuje pouze číslo 3.

Chcete-li odpočítávat z čísla 3 na 1, můžete:

  1. zobrazit číslo 3.
  2. a zavolejte countDown(2), které zobrazuje číslo 2.
  3. a zavolejte countDown(1), které zobrazuje číslo 1.

následující změny countDown() rekurzivní funkce

countDown(3) bude běžet, dokud velikost zásobníku je překročena, jako je tento:

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

… protože to nemá podmínku, aby přestal volat sám.

odpočítávání se zastaví, když je další číslo nulové, proto přidáme podmínku if takto:

výstup:

321

countDown() zdá se, že funguje podle očekávání.

Jak je však uvedeno v tutoriálu typu funkce, název funkce je odkazem na skutečný objekt funkce.

Pokud je někde v kódu nastaven název funkce na null, rekurzivní funkce přestane fungovat.

například následující kód způsobí chybu:

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

Chyba:

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

Jak skript funguje:

  • nejprve přiřaďte countDown název funkce proměnné newYearCountDown.
  • za druhé nastavte countDown odkaz na funkci null.
  • za třetí zavolejte funkci newYearCountDown.

kód způsobí chybu, protože tělo countDown() funkce odkazy countDown název funkce, který byl nastaven na null v době volání funkce.

Chcete-li jej opravit, můžete použít pojmenovaný výraz funkce následujícím způsobem:

2) Vypočítejte součet číslic čísla příklad

dané číslo, např. 324, Vypočítejte součet číslic 3 + 2 + 4 = 9.

použít rekurzivní techniky, můžete použít následující kroky:

f(324) = 4 + f(32)f(32) = 2 + f(3)f(3) = 3 + 0 (stop here)

f(324) = 4 + f(32) f(324) = 4 + 2 + f(3) f(324) = 4 + 2 + 3

následující obrázek znázorňuje sumOfDigits() rekurzivní funkce

Jak to funguje:

Shrnutí

  • rekurzivní funkce je funkce, která volá sama sebe, dokud to nebude
  • rekurzivní funkce má vždy podmínkou, že se zastaví funkce volá sama sebe.
  • byl tento návod užitečný ?
  • YesNo