Slovník | Vyhledávání | Mapa webu
 
Základy informatiky pro biologyAlgoritmizace a programování Návrh algoritmů IV. Rekurze

Logo Matematická biologie

Rekurze

Podprogramy, je možné volat jak z hlavního programu, tak i z podprogramů a říkáme tomu rekurzivní volání. Rekurzi si je možné představit například tak, že máte kameru, připojte ji k televizi a necháte na ni zobrazovat to, co kamera snímá. Následně kamerou zaberte televizní obrazovku, výsledkem je rekurze.

Rekurze je trochu kontroverzní téma. Problém rekurze je v tom, že je to mocný nástroj, který se snadno může stát noční můrou programátora. Obecně se doporučuje rekurzi se vyhnnout, vždy se dá zapsat algoritmus tak, že nepoužijeme rekurzi, i když se nabízí. Řešení ovšem nebývá tak elegantní.

A proč se rekurze nedoporučuje? Máte podprogram z něhož voláme opět tento podprogram - to je princip rekurze. Pokud bychom měli volání jen tak, bez nějakého dalšího omezení, tak dostáváme nekonečný program. První důležitá věc, která musí být při použití rekurze jasně definována, je podmínka pro její zastavení. Jak již bylo řečeno, pokud tato podmínka chybí nebo je nepřesná či neúplná, tak většinou dostaneme nekonečný program, který díky rychle vyčerpá systémové prostředky. Rekurzivní volání totiž vytváří nové a nové instance podprogramu, s ní vytváří i nové instance jeho proměnných a postupně zaplňuje paměť. A stejně tak je někde potřeba mít zaznamenáno, jak se podprogramy volaly. To se opět ukládá do paměti, která samozřejmě není neomezená. V případě nevhodného použití lze tuto paměť vyčerpat a výsledný program se stává nestabilní.

 
vytvořil Institut biostatistiky a analýz Lékařské fakulty Masarykovy univerzity