Vakdidactiek 9/12/2002 Leen Depré leen.depre@rug.ac.be
Toepassingen op recursie Binaire bomen Herschrijfsystemen
Herhaling Wat is recursie? Een functie (methode) heet recursief wanneer er in de code een aanroep van zichzelf voorkomt.
Binaire bomen gebalanceerde boom
Binaire bomen ongebalanceerde boom
Binaire bomen in LOGO
Binaire bomen in LOGO to tree :size if :size < 5 [stop] fd :size lt 30 tree :size*.7 rt 60 bk :size end
Binaire bomen
Random De functie genereert een willekeurig geheel getal, kleiner dan de opgegeven waarde. print random 50 fd (random 50) + 50 ((random 5) + 5) / 10
Binaire bomen (code) to rtree :size if :size < 5 [stop] fd :size lt 30 rtree :size*(((random 5)+5)/10) rt 60 bk :size end
Natuurlijke boom
Natuurlijke boom (code) to tree :size if :size < 5 [fd :size bk :size stop] fd :size/3 lt 30 tree :size*2/3 rt 30 fd :size/6 rt 25 tree :size/2 lt 25 bk :size end
Herschrijfsystemen a a b b a over het alfabet {a,b} Dus krijgen we: b a a b a b a a b a a b a b a a b a b a …
Grafische herschrijfsystemen in LOGO niveau 0 niveau 1
De sneeuwvlok-krommen van Koch niveau 0 niveau 1 niveau 2 niveau 3
Programma voor figuur van niveau 1 to flock :size fd :size lt 60 rt 120 end to snow :size cs ht repeat 3[flock :size/3 rt 120]
Volledig programma met recursie to flock :size :niveau ifelse :niveau = 0 [fd :size][flock :size/3 :niveau-1] lt 60 rt 120 end to snow :size :niveau cs ht ifelse :niveau > 0 [repeat 3[flock :size/3 :niveau-1 rt 120]] [repeat 3[fd :size rt 120]]
Nog een voorbeeld
Oplossing to fline :size :niveau ifelse :niveau = 0 [fd :size][fline :size/4 :niveau-1] rt 90 lt 90 end
Oplossing (vervolg) to fvierkant :size :niveau cs ht ifelse :niveau > 0 [repeat 4[fline :size/4 :niveau-1 rt 90]] [repeat 4[fd :size rt 90]] end