Sobes.tech
Junior

Jaký je rozdíl mezi rekurzí a iterací?

sobes.tech AI

Odpověď od AI

Rekurze je, když funkce volá sama sebe. Iterace je opakované provádění bloku kódu pomocí cyklů.

Hlavní rozdíly:

  • Mechanismus: Rekurze používá zásobník volání. Iterace používá konstrukce cyklů (for, while).
  • Řízení toku: Rekurze se větví do hloubky. Iterace je sekvenční.
  • Konečná podmínka: Rekurze má základní případ. Iterace má podmínku ukončení cyklu.
  • Paměť: Rekurze může spotřebovat více paměti kvůli zásobníku volání. Iterace je efektivnější z hlediska paměti při velkém počtu opakování.
  • Čitelnost: Pro některé úkoly (například průchod stromem) může být rekurze přehlednější. Pro jednoduché opakování je často srozumitelnější iterace.
  • Výkon: Iterace je obvykle rychlejší, protože nemá režii volání funkcí.

Příklad v Pythonu:

Výpočet faktoriálu rekurzí:

# Rekurzivní funkce pro výpočet faktoriálu
def factorial_recursive(n):
    if n == 0:  # Základní případ
        return 1
    else:
        return n * factorial_recursive(n-1)

Výpočet faktoriálu iterací:

# Iterativní funkce pro výpočet faktoriálu
def factorial_iterative(n):
    result = 1
    for i in range(1, n + 1):
        result *= i
    return result

Volba mezi rekurzí a iterací závisí na konkrétním úkolu, požadavcích na výkon a paměť, stejně jako na preferencích v programovacím stylu. Rekurze se často používá pro úkoly s rekurzivními datovými strukturami (stromy, grafy), zatímco iterace je univerzální pro opakování sekvenčních akcí.