Rekurze ve funkcionálním programování

Koncepty programovacích paradigmat

Eleanor Thomas

Senior Data Analytics Engineer

Co je rekurze?

  • Rekurzivní funkce: funkce, která volá samu sebe
  • Musí obsahovat ukončovací podmínku, tzv. základní případ
  • Obsahuje také rekurzivní volání sebe sama s upraveným vstupem
0 | def my_recursive_function(input_value):
1 |     # base case
2 |     if base_case_condition:
3 |        return base_case_output_value
4 |     # recursive call
5 |     else:
6 |        return my_recursive_function(modified_input_value) + some_modification
Koncepty programovacích paradigmat

Proč používat rekurzi?

  • Některé problémy jsou přímočařejší při rekurzivní definici
  • Fibonacciho čísla:
    • 0, 1, ...
    • 0, 1, 1, ...
    • 0, 1, 1, 2, ...
    • 0, 1, 1, 2, 3, ...
Koncepty programovacích paradigmat

Další příklady rekurze

Souborový systém

  • Procházení souborového systému
Koncepty programovacích paradigmat

Další příklady rekurze

Souborový systém; metoda třídění

  • Procházení souborového systému
  • Určité třídící algoritmy, např. Merge Sort
Koncepty programovacích paradigmat

Další příklady rekurze

Souborový systém; metoda třídění; datová struktura

  • Procházení souborového systému
  • Určité třídící algoritmy, např. Merge Sort
  • Různé datové struktury jsou definovány rekurzivně
Koncepty programovacích paradigmat

Rekurze vs. iterace

  • Každou rekurzivní funkci lze zapsat také iterativně
  • Iterativní funkce používá smyčku místo rekurzivního volání
def iterative_factorial(n):
    result = 1
    for i in range(1, n + 1):
        result = result * i
    return result
Koncepty programovacích paradigmat

Pojďme si procvičit!

Koncepty programovacích paradigmat

Preparing Video For Download...