Studijní materiály
EXTRA Kontakt

Rekurze v jazyce C

Rekurze je technika, při které funkce volá sama sebe. Je to mocný nástroj v programování, který umožňuje elegantní a efektivní řešení určitých problémů. V tomto výkladu se podrobně podíváme na základní principy rekurze v jazyce C a poskytneme konkrétní příklady jejího použití.

Princip rekurze

Rekurze je založena na dvou základních principech:

  1. Základní případ (base case): Rekurzivní funkce musí mít podmínku ukončení volání sama sebe, aby nedošlo k nekonečnému cyklení.
  2. Rekurzivní krok (recursive step): Rekurzivní funkce musí volat sama sebe s menšími nebo odlišnými vstupy, aby se postupně přibližovala k základnímu případu.

Příklad rekurzivní funkce

Začněme jednoduchým příkladem rekurzivní funkce pro výpočet faktoriálu:

#include <stdio.h>
      
      int factorial(int n) {
          // Základní případ
          if (n == 0 || n == 1) {
              return 1;
          }
          // Rekurzivní krok
          else {
              return n * factorial(n - 1);
          }
      }
      
      int main() {
          int cislo = 5;
          printf("Faktorial cisla %d je %d\n", cislo, factorial(cislo));
          return 0;
      }
      

V tomto příkladu funkce factorial volá sama sebe s menším vstupem, dokud nedosáhne základního případu, kdy je vstupem 0 nebo 1.

Rekurze proti iteraci

Rekurze a iterace jsou dvě základní techniky používané pro opakování činností v programování. Oba přístupy mají své výhody a nevýhody. Rekurze je často používána pro problémy, které mají strukturální nebo matematickou rekurzivní povahu, zatímco iterace je vhodnější pro lineární nebo cyklické problémy.

Příklady použití rekurze

Kromě výpočtu faktoriálu lze rekurzi využít například pro:

Je důležité si uvědomit, že rekurze není vždy nejefektivnějším řešením a může vyžadovat více paměti než iterativní přístup. Nicméně může být velmi užitečná pro elegantní a přehledné řešení určitých problémů.

Závěr

Rekurze je mocný nástroj v programování, který umožňuje efektivní řešení určitých problémů. Je důležité pochopit základní principy rekurze a umět ji správně používat. Pamatujte, že správné nastavení základního případu a rekurzivního kroku je klíčem k úspěšné implementaci rekurzivních funkcí.