V tomto tutoriálu se naučíme rekurzivní funkci v C ++ a její práci pomocí příkladů.
Funkce, která se sama nazývá, se nazývá rekurzivní funkce. A tato technika je známá jako rekurze.
Práce s rekurzí v C ++
void recurse() (… recurse();… ) int main() (… recurse();… )
Obrázek níže ukazuje, jak rekurze funguje opakovaným voláním.
![](https://cdn.wiki-base.com/6201887/c_recursion_with_example.png.webp)
Rekurze pokračuje, dokud není splněna nějaká podmínka.
Aby se zabránilo nekonečné rekurzi, lze použít příkaz … else (nebo podobný přístup), kde jedna větev provádí rekurzivní volání a druhá nikoli.
Příklad 1: Faktoriál čísla pomocí rekurze
// Factorial of n = 1*2*3*… *n #include using namespace std; int factorial(int); int main() ( int n, result; cout <> n; result = factorial(n); cout << "Factorial of " << n << " = " < 1) ( return n * factorial(n - 1); ) else ( return 1; ) )
Výstup
Zadejte nezáporné číslo: 4 Faktoriál 4 = 24
Práce faktoriálního programu
![](https://cdn.wiki-base.com/6201887/c_recursion_with_example_2.png.webp)
Jak vidíme, factorial()
funkce se sama volá. Během každého hovoru jsme však snížili hodnotu n o 1
. Když n je menší než 1
, factorial()
funkce nakonec vrátí výstup.
Výhody a nevýhody rekurze
Níže jsou klady a zápory používání rekurze v C ++.
Výhody rekurze C ++
- Díky tomu je náš kód kratší a čistší.
- Rekurze je vyžadována u problémů týkajících se datových struktur a pokročilých algoritmů, jako je Graph a Tree Traversal.
Nevýhody rekurze C ++
- Ve srovnání s iterativním programem to vyžaduje spoustu místa v zásobníku.
- Využívá více času procesoru.
- Může být obtížnější ladit ve srovnání s ekvivalentním iterativním programem.