C Rekurzia (rekurzívna funkcia)

Obsah

V tejto príručke sa naučíte písať rekurzívne funkcie v programovaní C pomocou príkladu.

Funkcia, ktorá si hovorí, je známa ako rekurzívna funkcia. A táto technika je známa ako rekurzia.

Ako funguje rekurzia?

 void recurse () (… recurse (); …) int main () (… recurse (); …)

Rekurzia pokračuje, kým nie je splnená nejaká podmienka, ktorá tomu zabráni.

Aby sa zabránilo nekonečnej rekurzii, dá sa použiť príkaz … else (alebo podobný prístup), keď jedna vetva robí rekurzívne volanie a iná nie.

Príklad: Súčet prirodzených čísel pomocou rekurzie

 #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ýkon

 Zadajte celé kladné číslo: 3 súčet = 6

Spočiatku sum()je volaná z main()funkcie s číslom odovzdaným ako argument.

Predpokladajme, že hodnota n vo vnútri sum()je spočiatku 3. Počas nasledujúceho volania funkcie sa funkcii odovzdajú 2 sum(). Tento proces pokračuje, kým n sa nerovná 0.

Keď je n rovné 0, ifpodmienka zlyhá a elsečasť sa vykoná, pričom sa nakoniec vráti súčet celých čísel do main()funkcie.

Výhody a nevýhody rekurzie

Rekurzia robí program elegantným. Ak je však výkon nevyhnutný, použite radšej slučky, pretože rekurzia je zvyčajne oveľa pomalšia.

Ako už bolo povedané, rekurzia je dôležitý koncept. Často sa používa v dátovej štruktúre a algoritmoch. Napríklad je bežné používať rekurziu pri problémoch, ako je prechod stromom.

Zaujímavé články...