Autorské riešenie Všimnime si najskôr, ako taký bombulovník vyzerá. Jeho konáre vyzerajú podobne ako celý bombulovník. Rozdiel je len v tom, že majú o jeden konár menej. Vyzerajú, ako o jeden rok mladší a o polovicu menší bombulovník. Mohli by sme teda povedať, že na konci každého konára bombulovníka vyrastajú dva ďalšie, o rok mladšie bombulovníky polovičnej veľkosti. Jeden v rovnakom smere ako konár z ktorého vyrastá, druhý otočený o 90° vľavo. Neplatí to samozrejme pre konáre, ktoré sú na koncoch. Na konci každého konára je samozrejme ešte bombula.
Procedúra pre kreslenie bombulovníka by teda mohla na začiatku vyzerať asi takto:
viem bombulovnik :vek :dlzka Nakreslíme konár danej dĺžky (do :dlzka), potom bombulu (kruh :dlzka/2). Natočíme sa o 90° vľavo a nakreslíme o rok mladší a o polovičku menší bombulovnik (bombulovnik :vek-1 :dlzka/2). Natočíme sa do pôvodného smeru a nakreslíme druhý z bombulovníkov. Nakoniec sa vrátime tak, kde sme začali (vz :dlzka). Lenže, ak by sme procedúru nechali v tomto tvare, bombulovníky by sa kreslili do nekonečna. Po nakreslení bombule by sme začali kresliť ďalší bombulovník. Nakreslili by sme jeho bombulu a začali kresliť ďalší bombulovník. A tak stále ďalej. Musíme teda zabezpečiť, aby sa tak nestalo. Využijeme vek bombulovníka. Každý ďalší bombulovník je o rok mladší ako predchádzajúci. Ak jeho vek je aspoň 1, môžeme ho nakresliť. V opačnom prípade už nie. Doplníme do procedúry podmienku, ktorá bude kontrolovať vek práve kresleného bombulovníka.
viem bombulovnik :vek :dlzka Vaše zaujímavé riešenia a najčastejšie chyby Rekurziu v tejto úlohe našiel len jeden tím. Ostatní sa pokúšali úlohu riešiť pomocou cyklov. To sa im však nepodarilo. |
||||||||||
© Univerzita Pavla Jozefa Šafárika v Košiciach, Prírodovedecká fakulta, Ústav informatiky palmaj (zavinac) upjs.sk |