Download de presentatie
De presentatie wordt gedownload. Even geduld aub
GepubliceerdIvo Peeters Laatst gewijzigd meer dan 10 jaar geleden
1
Inleiding tot recursie1 door Maarten Lemmens
2
Inleiding tot recursie2 Wat is recursie ? Een procedure die zichzelf oproept. Vb. in echte leven: Radio en telefoon Spiegel effect
3
Inleiding tot recursie3 Vb in LOGO Wat doet onderstaande procedure, als geweten is dat pr staat voor print? to tellen :getal pr :getal tellen :getal - 1 end
4
Inleiding tot recursie4 Vb in LOGO Het voorbeeld met recursie blijkt vast te zitten in oneindige lus. Dit kan vermeden worden via een stopconditie ahv een if lus. ifelse [ ] [als niet voldaan is aan conditie>] Ofnog: if [ ]
5
Inleiding tot recursie5 If toegepast in vb Waar zullen we if moeten plaatsen om een oneindige lus te vermijden? Welke conditie zullen we nemen als we bij 1 willen stoppen ? to tellen :getal pr :getal tellen :getal - 1 end to tellen :getal if :getal < 1 [stop] pr :getal tellen :getal - 1 end
6
Inleiding tot recursie6 Plaatsing recursieve oproep Is er een verschil in resultaat tussen onderstaande procedures ? to tellen1 :getal if :getal < 1 [stop] pr :getal tellen1 :getal - 1 end to tellen2 :getal if :getal < 1 [stop] tellen2 :getal - 1 pr :getal end
7
Inleiding tot recursie7 Verschil tussen beide vb. to tellen1 :getal if :getal < 1 [stop] pr :getal tellen1 :getal - 1 end getal getal - 1 getal - 2 … 1 to tellen2 :getal if :getal < 1 [stop] tellen2 :getal – 1 pr :getal end 1 2 … getal – 1 getal
8
Inleiding tot recursie8 Uitvoeringsschema tellen1 to tellen1 2 if 2 < 1 [stop] pr 2 tellen1 1 to tellen1 1 if 1 < 1 [stop] pr 1 tellen1 0 to tellen1 0 if 0 < 1 [stop] end Resultaat: 2 1
9
Inleiding tot recursie9 Uitvoeringsschema tellen2 to tellen2 2 if 2 < 1 [stop] tellen2 1 to tellen2 1 if 1 < 1 [stop] tellen2 0 to tellen2 0 if 0 < 1 [stop] end pr 1 end pr 2 end Resultaat: 1 2
10
Inleiding tot recursie10 Niet recursieve tellen1 Hoe kunnen we onderstaande code niet-recursief schrijven zonder het resultaat te wijzigen? to tellen1 :getal if :getal < 1 [stop] pr :getal tellen1 :getal - 1 end to tellen1 :getal repeat :getal [ pr :getal make "getal :getal - 1 ] end
11
Inleiding tot recursie11 Niet recursieve tellen2 Hoe kunnen we onderstaande code niet-recursief schrijven zonder het resultaat te wijzigen? to tellen2 :getal if :getal < 1 [stop] tellen1 :getal - 1 pr :getal end to tellen2 :getal make “tijdelijk 1 repeat :getal [ pr :tijdelijk make “tijdelijk :tijdelijk + 1 ] end
12
Inleiding tot recursie12 Conclusie Plaats van de recursieve oproep kan een invloed hebben op het resultaat. In simpele voorbeeldjes kan recursie veranderd worden door repeat of door een lus (vb if lus). Zonder gebruik te maken van recursie zal deze vlieger moeilijk zijn om te tekenen. Daarentegen met recursie… (wat we volgende les zullen zien)
13
Inleiding tot recursie13 Conclusie Recursie kan gebruikt worden voor complexe tekeningen of wiskundige berekeningen. Recursie zorgt ervoor dat procedures korter en eleganter zijn, het ontwerpen of testen is dan weer niet altijd eenvoudig.
Verwante presentaties
© 2024 SlidePlayer.nl Inc.
All rights reserved.