Rekurze je stav, kdy je určitý objekt součástí sebe samého. Rekurzi můžeme potkat v mnoha oborech, např. v matematice a informatice. Mezi příklady rekurze patří situace, kdy definice konkrétního pojmu obsahuje daný pojem, obraz obsahuje zmenšenou kopii sebe sama nebo datová struktura obsahuje odkaz na strukturu stejného typu. V programování ji využíváme při zápisů podprogramů, tedy funkcí nebo při definování datových struktur. Součástí rekurzivní funkce musí být podmínka, která řekne, kdy se má rekurze ukončit.
V matematice je častým příkladem faktoriál, 0! = 1, 1! = 1, 2! = 2, 3! = 6, 4! = 24, 5! = 120. Pokud n je rovno 0, pak faktoriál 0 je 1. Faktoriál čísla n je n * (n – 1)! pro n > 0.
Ukázka v Pythonu:
V běžném životě může být ukázkou květák či brokolice, protože obsahují sami sebe ve zmenšené formě. Dalším hezkým příkladem jsou Hanojské věže. Úkolem je přenést n-tici disků z jedné tyče na druhou tak, aby se zachovala posloupnost disků od největšího po nejmenší. Při přenosu ještě využíváme třetí pomocnou tyč. Rekurze je zde viditelná při pravidlech přenosu disků. Mezi další příklady patří pohled kamery/fotoaparátu na to, co zobrazuje, větve stromu nebo kapradina.
Rekurzivní formule se objevují u některých geometrických útvarů a křivek. Velice známé jsou fraktálové obrazce. Asi nejznámějším příkladem je Kochova vločka, při jejíž konstrukci se vychází z rovnostranného trojúhelníku. Každá jeho strana je rozdělena na tři stejně velké díly a vždy nad prostředním dílem je sestrojen další menší rovnostranný trojúhelník směrem ven.
V nástroji Scratch lze poměrně jednoduše naprogramovat funkci pro vykreslení stromu, následně je možné výsledný strom modifikovat díky stupni větvení, délce větví, úhlu otočení jednotlivých větví, atd.
A teď se dostáváme k tomu rekurzivnímu kreslení. Porozumět rekurzi není úplně snadné, dá se ovšem „nakousnout“ poměrně příjemným způsobem s nástrojem http://recursivedrawing.com/draw.html. K dispozici máme pouze čtverec a kruh a z těchto dvou základních tvarů můžeme nakreslit ledacos. Tyto dva tvary můžeme v pracovním prostředí přesouvat, zmenšovat, zvětšovat a při stisku klávesy Shift vytvořit z kruhu elipsu, ze čtverce obdélník, kosočtverec či kosodélník. Tvary lze kopírovat, protáčet a dále upravovat. Výsledkem mohou být velmi zajímavé abstrakce, optické klamy či obrázky konkrétních objektů. Žáky můžete nechat tvořit dle své fantazie nebo mohou kopírovat vámi nakreslenou předlohu. Při práci s předlohou žáci musí přemýšlet nad tím, z jakých částí je obraz složen, tedy si rozložit problém na několik menších problémů. Dále si žáci musí uvědomit, co se kdy a kde opakuje a kam se to v menším či větším měřítku kopíruje.
Ukázky z nástroje Recursive drawing:
Autor: Martina Kupilíková