V tomto kurzu se naučíte psát rekurzivní funkce v programování C pomocí příkladu.
Funkce, která se sama nazývá, se nazývá rekurzivní funkce. A tato technika je známá jako rekurze.
Jak funguje rekurze?
void recurse () (… recurse ();…) int main () (… recurse ();…)
Rekurze pokračuje, dokud není splněna nějaká podmínka, aby se tomu zabránilo.
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 jiná nikoli.
Příklad: Součet přirozených čísel pomocí rekurze
#include int sum(int n); int main() ( int number, result; printf("Enter a positive integer: "); scanf("%d", &number); result = sum(number); printf("sum = %d", result); return 0; ) int sum(int n) ( if (n != 0) // sum() function calls itself return n + sum(n-1); else return n; )
Výstup
Zadejte kladné celé číslo: 3 součet = 6
Zpočátku sum()
se volá z main()
funkce s číslem předaným jako argument.
Předpokládejme, že hodnota n uvnitř sum()
je zpočátku 3. Během dalšího volání funkce se do sum()
funkce předá 2 . Tento proces pokračuje, dokud n není rovno 0.
Když n je rovno 0, if
podmínka se nezdaří a else
část se provede, čímž se nakonec vrátí součet celých čísel do main()
funkce.
Výhody a nevýhody rekurze
Díky rekurzi je program elegantní. Pokud je však výkon zásadní, použijte místo toho smyčky, protože rekurze je obvykle mnohem pomalejší.
Rekurze je tedy důležitý koncept. Často se používá v datové struktuře a algoritmech. Například je běžné používat rekurzi v problémech, jako je procházení stromu.