Download de presentatie
GepubliceerdSterre Bauwens Laatst gewijzigd meer dan 10 jaar geleden
1
Algoritme Inhoud: Definitie algoritme Recursieve algoritmes Opgaven
Voorbeelden: zoeken Torens van Hanoi machtsverheffen
2
Algoritme Klassieke voorbeelden:
Hoe sorteer je een verzameling gegevens? Hoe zoek je in een geordende verzameling een element?
3
Algoritme Een algoritme is een eenduidige beschrijving
van de wijze waarmee een klasse van problemen in een eindig aantal stappen kan worden opgelost. abu-Ja’far Mohammed ibn-Musa al-Khuwarizmi (negende eeuw, Persisch wiskundige)
4
Algoritme Een algoritme wordt geïmplementeerd door
één of meerdere methods. Preconditie Specificatie van de invoer Nauwkeurige specificatie van elke stap. Correctheid Eindige executietijd Postcondities Side effects
5
Recursie Standaard voorbeeld: 5! = 5 * 4 * 3 * 2 * 1
4! = 4 * 3 * 2 * 1 5! = 5 * 4! Om 5! te kunnen bereken moet eerst 4! worden berekend. Dit is het kenmerk van recursie.
6
Recursie Stopt de recursie?? 4! = 4 * 3! 3! = 3 * 2! 2! = 2 * 1!
1! = 1 Wiskundigen hebben 0! = 1 gedefinieerd.
7
Recursieve code int fac(int n) { if (n == 0) return 1;
return n * fac(n - 1); }
8
Opgaven Schrijf recursieve methodes voor:
x0 = 1 xn = x * xn - 1 (1 * 3 * 5 * .. (2n - 1)) / *(2 * 4 * 6 .. (2n))
9
Voorbeeld: zoeken Gegeven een array met integers die oplopend
gesorteerd zijn en een getal x. Wat is de index van het array-element dat x bevat? Indien x niet in het array voorkomt, wordt -1 geretourneerd. Voorbeeld: array = { 2, 7, 10, 15} en x = 7. index = 1
10
Zoeken
11
Zoeken Het zoeken in het bovenste en onderste
gedeelte gebeurt recursief. Recursie stopt als: het middelste element gelijk is aan x; het te doorzoeken gedeelte geen elementen bevat.
12
Zoeken int zoek(int tabel[], int x, int begin, int einde) {
int midden = (begin + einde) / 2; if (begin > einde) return -1; if (tabel[midden] == x) return midden;
13
Zoeken if (tabel[midden] < x)
return zoek(tabel, x, midden + 1, einde); return (tabel, x, begin, midden - 1); }
14
Torens van Hanoi
15
Torens van Hanoi
16
Hanoi void hanoi(int n, int van, int hulp, int naar) { if (n == 0)
return; hanoi(n - 1, van, naar, hulp); System.out.println(“schijf “ + n + “ van “ + van + “ naar “+ naar); hanoi(n - 1, hulp, van, naar); }
17
Machtsverheffen a32 aantal vermenigvuldigingen: 31
a32 = (a16)2 slechts 16 vermenigvuldigingen. a16 = (a8)2 is efficiënter. a10 = (a5)2 a5 = a * (a2)2 Maak onderscheid tussen even en oneven exponenten. Zie en modulehandleiding.
18
Toepassingen recursie
Sorteer methodes (quicksort, mergesort) “vooruitdenken” bij bordspelen (schaken, dammen) Zoekproblemen Evalueren van rekenkundige expressies Syntactische analyse van code.
Verwante presentaties
© 2024 SlidePlayer.nl Inc.
All rights reserved.