Vědět víc - vzdělávací portál pro zvídavé


Vnořování podprogramů

Slide

Podprogram můžeme zavolat i v rámci podprogramu. Někdy je to dokonce výhodné nebo nezbytné. 

Volání nejsou prakticky omezena, jediným omezením je paměť. Při volání podprogramu si počítač musí pamatovat, kam se má po skončení podprogramu vrátit. Tuto informaci si však musí uložit do paměti. A právě paměť je jediné omezení při volání podprogramů. Můžeme volat podprogramy tak dlouho, dokud nám stačí paměť. To je také důvodem, proč nesmíme zapomínat se z podprogramu vracet. 

Speciálním případem volání podprogramu uvnitř podprogramu je volání sebe sama. Tento stav se nazývá rekurze. 

Rekurzi známe i z jiných oborů, než je programování. Na obrázku vidíme například Sierpińského trojúhelník, který vzniká rekurzivním vykreslováním rovnostranných trojúhelníků. 

Dalším příkladem rekurze je zkratka GNU, která znamená GNU is Not Unix (GNU Není Unix). 

Vtipným příkladem rekurze je definice nekonečného cyklu. Na tomto příkladu je vidět, že pomocí rekurze může snadno vzniknout nekonečný proces. Chceme-li tomu zabránit, musíme rekurzi včas ukončit pomocí konečné podmínky.