To kouzlo kterým se to dá provést se jmenuje rekurze. Volat jiné příkazy už umíš, ale napadlo tě co by se stalo kdyby příkaz zavolal sám sebe? Zkusíme si to na příkazu KE-ZDI, ten už umíš řešit cyklem DOKUD, ale teď vytvoříme cyklus pomocí rekurze:
Kód: Vybrat vše
KE-ZDI
KDYŽ NENÍ ZEĎ
KROK
KE-ZDI
KONEC
KONECPozor na jednu věc, rekurze se dá velmi snadno zacyklit, takže si musíš ohlídat aby vždy byla možnost se z ní dostat! Nikdy nesmíš použít rekurzi bez nějaké podmínky, nebo vytvoříš nekonečnou smyčku, ta způsobí že program přestane reagovat, postupně zaplní celou paměť a spadne!
A teď se koukni jak by vypadal ten rekurzivní příkaz TAM-A-ZPĚT:
Kód: Vybrat vše
TAM-A-ZPĚT
KDYŽ NENÍ ZEĎ
KROK
TAM-A-ZPĚT
KROK
KONEC, JINAK
ČELEM-VZAD
KONEC
KONECZkus si nejdřív vymyslet příkaz který pomocí rekurze vysbírá všechny značky na políčku kde Karel stojí, a pak zapřemýšlej jak by se dal udělat ten rekurzivní TAM-A-ZPĚT.



