Download de presentatie
1
Recursie: De torens van Hanoi
Lesgever: Tineke Broekaert
2
Herhaling Recursie? algoritme roept zichzelf op
opgeroepen probleem kleiner dan origineel 2 delen: basisgeval en recursief gedeelte oplossing: Eerst basisgeval behandelen! voorbeeld: n! = n(n-1)!
3
De torens van Hanoi hulp bron doel 3 1 2
4
De torens van Hanoi Voorwaarden: 1 schijf verplaatsen per beurt
geen grote staaf op kleinere plaatsen hulp bron doel 2 1 3
5
De torens van Hanoi hulp bron doel 3 1 2
6
De torens van Hanoi hulp bron doel 3 1 2
7
De torens van Hanoi hulp bron doel 3 1 2
8
De torens van Hanoi hulp bron doel 3 1 2
9
De torens van Hanoi hulp bron doel 3 1 2
10
BASISGEVAL: 1 schijf verplaatst
De torens van Hanoi BASISGEVAL: 1 schijf verplaatst hulp bron doel 3 1 2
11
De torens van Hanoi hulp bron doel 3 1 2
12
toren van 2 schijven verplaatst
De torens van Hanoi toren van 2 schijven verplaatst hulp bron doel 3 1 2
13
De torens van Hanoi hulp bron doel 3 1 2
14
De torens van Hanoi hulp bron doel 3 1 2
15
De torens van Hanoi hulp bron doel 3 1 2
16
Toren van drie schijven verplaatst
De torens van Hanoi Toren van drie schijven verplaatst hulp bron doel 3 1 2
17
De torens van Hanoi hulp bron doel 3 1 2
18
Toren van 4 schijven verplaatst
De torens van Hanoi Toren van 4 schijven verplaatst hulp bron doel 3 1 2
19
De torens van Hanoi Probleem opsplitsen in deelproblemen Algoritme:
Als N = 1 enige schijf verplaatst Als N > 1 basisgeval!! recursie!! - Verplaats bovenste n-1 schijven van bron- naar hulpstaaf - Verplaats onderste schijf van begin- naar doelstaaf - Verplaats n-1 schijven van hulp- naar doelstaaf
20
Implementatie in Logo Deelproblemen?
beginsituatie: staven en schijven op het scherm tekenen verplaatsen van schijven: basisgeval schijf afhalen van staaf schijf toevoegen aan staaf Recursieve oproep HANOI verplaatsSchijven beginsituatie
21
to staaf : staaf : aantalSchijven
Implementatie in Logo WAAROM 1. Beginsituatie to staaf : staaf : aantalSchijven setpc [ ] setfc [ ] positie 300*(:staaf-2) 0 repeat 2 [fd 20+:aantalschijven*20 rt 90 fd 30 rt 90] rt 10 fd 5 fill lt 10 test : staaf 1 5 staaf 2 5 staaf 3 5
22
voegToeSchijf : staaf :schijf
Implementatie in Logo WAAROM voegToeSchijf : staaf :schijf setpc [ ] setfc [ ] positie 300*(:staaf-2)-(10*:schijf) (item :staaf :staven)*20 repeat 2 [fd 15 rt 90 fd 30+20*:schijf rt 90] rt 10 fd 5 fill positie 300*(:staaf-2)+5 (item :staaf :staven)*20+5 positie 300*(:staaf-2)+35 (item :staaf :staven)*20+5 lt 10 setItem :staaf :staven (item :staaf :staven)+1
23
Implementatie in Logo Array: 1 variabele, bevat verschillende items
make “arrayNaam {3 4 2} index (item 1 arrayNaam ) setItem 2 arrayNaam 10 3 {3 10 2}
24
Implementatie in Logo test: make “staven{0 0 0} KORTER? staaf 1 5
voegToeSchijf 2 5 voegToeSchijf 2 4 voegToeSchijf 2 3 voegToeSchijf 2 2 voegToeSchijf 2 1 KORTER? make “aantalSchijven 5 repeat :aantalschijven [voegtoeSchijf 2 :aantalschijven make "aantalschijven :aantalschijven-1]
25
to beginSituatie :aantalschijven
Implementatie in Logo to beginSituatie :aantalschijven cs ht make "staven {0 0 0} staaf 1 :aantalschijven staaf 2 :aantalschijven staaf 3 :aantalschijven repeat :aantalschijven [voegtoeSchijf 2 :aantalschijven make "aantalschijven :aantalschijven-1] beginsituatie HANOI verplaatsSchijven
26
Implementatie in Logo 2. Verplaatsen van schijven
Basisgeval: verplaats 1 schijf to verplaatsSchijf :bronstaaf :doelstaaf :schijf verwijderSchijf : bronstaaf voegToeSchijf :doelstaaf :schijf Procedure verwijderSchijf
27
Implementatie in Logo to verwijderSchijf :staaf
test: verwijderSchijf 2 setItem :staaf :staven (item :staaf :staven)-1 ; schijf wissen setfc [ ] positie 300*(:staaf-2) (item :staaf :staven)*20+5 fill ; paal terugkleuren positie 300*(:staaf-2) (item :staaf :staven)*20 setpc [ ] setfc [ ] repeat 2 [fd 15 rt 90 fd 30 rt 90] rt 10 fd 5 lt 10
28
Implementatie in Logo procedure verplaatsSchijven
To verplaatsSchijven :aantalschijven :bronstaaf :doelstaaf :hulpstaaf ifelse :aantalschijven = 1 [ verplaatsSchijf :bron :doel :aantalschijven ] [ verplaatsSchijven :aantalschijven-1 :bron :hulp :doel verplaatsSchijf :bron :doel :aantalschijven verplaatsSchijven :aantalschijven-1 :hulp :doel :bron]
29
to hanoi :aantalschijven
Implementatie in Logo 3. Oplossing to hanoi :aantalschijven beginSituatie :aantalSchijven verplaatsSchijven :aantalSchijven 2 3 1
Verwante presentaties
© 2024 SlidePlayer.nl Inc.
All rights reserved.