- Rekurze je technika v programování, kdy funkce volá sama sebe.
- Rekurze je velmi užitečná při práci s datovými strukturami, které mají rekurzivní povahu, jako jsou spojové seznamy a stromy.
- Tyto datové struktury se skládají z podobných menších struktur, což je činí vhodnými pro řešení pomocí rekurze.
Rekurze
- Rekurzivní funkce musí splňovat podmínky:
- Základní případ - podmínka, která ukončí rekurzi
- Rekurzivní případ - část, kde funkce volá sama sebe
- Např. faktoriál čísla, Fibonacciho posloupnost, procházení stromů, …
Příklad faktoriál
Rekurzivní datové struktury
- Rekurzivní datové struktury jsou struktury, které obsahují odkazy na objekty stejného typu. Toto umožňuje vytvářet složitější struktury, jako jsou spojové seznamy, stromy, grafy atd.
Spojový seznam
- Spojový seznam je rekurzivní datová struktura, která se skládá z uzlů, kde každý uzel obsahuje data a odkaz na následující uzel v seznamu.
- Spojové seznamy můžou obsahovat i odkaz na předchozí prvek.
Strom
- Stromy jsou hierarchické datové struktury, kde každý uzel může mít nulové nebo více poduzlů.
- Binární strom je speciální druh stromu, kde každý uzel má nejvýše dva potomky.
Procházení rekurzivních struktur
- Rekurze je využívána k procházení a manipulaci s rekurzivními datovými strukturami jako jsou stromy a spojové seznamy.
- Pomocí rekurze můžeme snadno implementovat algoritmy pro procházení, vyhledávání, vkládání, mazání a mnoho dalších operací na těchto strukturách.
Procházení spojového seznamu
- Spojový seznam můžeme procházet pomocí rekurze nebo iterativního způsobu.
Rekurzivní procházení spojového seznamu
Procházení stromu
- Procházení stromu můžeme provést pomocí různých strategií, jako je inorder, preorder a postorder.
Preorder procházení stromu (kořen - levý podstrom - pravý podstrom)
preorder procházení stromu
Navigace
Předchozí: Funkce vyšších řádů - mapování, filtrování, redukce a anonymní funkce Následující: Iterátory a generátory Celý okruh: 3. Programovací jazyky a programování