24/11/2003LOGO - recursie - vliegers1 Recursie: Vliegers in vliegers Dieter Beheydt 24/11/2003
LOGO - recursie - vliegers2 Rechthoeken in rechthoeken Probeer de volgende figuur via een klein recursief programma te tekenen.
24/11/2003LOGO - recursie - vliegers3 Vliegers in vliegers Groter recursief programma vlieger :x :y aantal
24/11/2003LOGO - recursie - vliegers4 Vliegers in vliegers Top – down opslitsing recur.rand top bottom recur.rand kruis vlieger
24/11/2003LOGO - recursie - vliegers5 Vliegers in vliegers Opbouw tekening via recursie
24/11/2003LOGO - recursie - vliegers6 Vliegers in vliegers Code voor top: to top :x make "korte_zijde sqrt ((:x * :x) + (:x * :x)) fd :korte_zijde rt 90 fd :korte_zijde end
24/11/2003LOGO - recursie - vliegers7 Vliegers in vliegers Code voor bottom to bot :x :y make "lange_zijde sqrt ((:x * :x) + (:y * :y)) make "hoek arctan (:x / :y) rt (45 + :hoek) fd :lange_zijde rt ( * :hoek) fd :lange_zijde rt :hoek end
24/11/2003LOGO - recursie - vliegers8 Vliegers in vliegers Nu recursief to recur.rand :x :y top :x bot :x :y pu rt 90 fd :stap lt 45 pd if :x = :stap [stop] recur.rand :x - :stap :y end
24/11/2003LOGO - recursie - vliegers9 Vliegers in vliegers Totaal programma to kruis :x :y fd :x bk (:x + :y) fd :y rt 90 fd :x bk (:x + :x) lt 45 end to vlieger :x :y :num make "stap :x / :num cs rt 45 recur.rand :x :y lt 45 kruis :x :y wait 180 end
24/11/2003LOGO - recursie - vliegers10 Vliegers in vliegers Belang van een juist stopcriterium ! vlieger ???? to recur.rand :x :y top :x bot :x :y pu rt 90 fd :stap lt 45 pd if :x = :stap [stop] recur.rand :x - :stap :y end stopcriterium
24/11/2003LOGO - recursie - vliegers11 Vliegers in vliegers Een juist stopcriterium vlieger ???? Verbeterd stopcriterium to recur.rand :x :y top :x bot :x :y pu rt 90 fd :stap lt 45 pd if :x = :stap [stop] if :x < :stap [stop] recur.rand :x - :stap :y end OK
24/11/2003LOGO - recursie - vliegers12 Besluit Bepaalde problemen kunnen elegant opgelost worden door recursie te gebruiken. Opgelet voor –Eindigheid –Juist stopcriterium