{"id":208,"date":"2022-01-20T15:54:51","date_gmt":"2022-01-20T14:54:51","guid":{"rendered":"https:\/\/wiskunst.hjgsoft.nl\/?page_id=208"},"modified":"2022-01-24T09:42:26","modified_gmt":"2022-01-24T08:42:26","slug":"recursie","status":"publish","type":"page","link":"https:\/\/wiskunst.nl\/index.php\/programmeren1\/programmeren\/recursie\/","title":{"rendered":"Recursie"},"content":{"rendered":"<p>In de wiskunde bestaan er zogenaamde recurente betrekkingen.<br \/>\nDit zijn betrekkingen die worden uitgedrukt in termen van zichzelf.<br \/>\nBij de meeste programmeertalen is dit principe ook bekend en wordt het daar\u00a0<i>recursie<\/i>\u00a0genoemd.<br \/>\nIn Pascal kun je recursie vinden bij procedures en functies.<br \/>\nHet bovenstaande klinkt allemaal misschien wat vaag en abstract, dus laten we maar eens aan de hand van een voorbeeld kijken hoe een en ander in zijn werk gaat.<br \/>\nIk gebruik hiervoor het voorbeeld dat bijna overal voor dit onderwerp wordt gebruikt en dat is het berekenen van een faculteit.<br \/>\nDe faculteit van een getal zegt op hoeveel verschillende manieren een verzameling van\u00a0<i>getal<\/i>\u00a0elementen gesorteerd kan worden.<br \/>\nZo kun je 2 pennen op 2 verschillende manieren naast elkander leggen.<br \/>\nDrie pennen kun je al op 6 verschillende manieren naast elkaar leggen: 123, 132, 213, 231, 312 en 321.<br \/>\nVijf pennen op 120 manieren!<\/p>\n<p>De berekening die hierachter zit is zeer eenvoudig: het is de vermenigvuldiging van 1 t\/m het getal waarvan je de faculteit wilt weten.<br \/>\nDus de faculteit van 3 (de wiskundige notatie is 3!, het uitroepteken staat dus voor faculteit) is niets anders dan 1x2x3.<br \/>\nEn zo is 4!=1x2x3x4=24, en 5!=1x2x3x4x5=120.<br \/>\nEen functie die dit uitrekent is niet moeilijk te maken (zie\u00a0<a href=\"p11.html#11.1\">opgave 11.1<\/a>).<br \/>\nNu gaan we eens op een andere manier tegen deze vermenigvuldigingen aankijken.<\/p>\n<p>2!=1&#215;2. 3!=1x2x3, met haken geschreven: 3!=(1&#215;2)x3, waarbij ik het deel tussen haken kan vervangen (substitutie) door 2!, want dat is immers ook 1&#215;2. Dan krijg ik dus 3!=2!x3.<br \/>\nVoor 4! kan ik hetzelfde doen: 4!=(1x2x3)x4 &#8211;&gt; 4!=3!x4, want 3!=1x2x3.<br \/>\nIk hoop dat je ziet dat ik een manier heb gevonden om een faculteit uit te drukken in een vermenigvuldiging tussen een getal en een andere faculteit, ofwel ik druk de oplossing uit in termen van zichzelf.<br \/>\nIn z&#8217;n algemeenheid geldt dat n!=(n-1)!*n, ga dat maar even na.<br \/>\nEn nu komt de grap van dit verhaal: We kunnen dit (min of meer) \u00e9\u00e9n op \u00e9\u00e9n programmeren.<br \/>\nIn Pascal ziet dat er zo uit:<\/p>\n<p><span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">function Fac(n: byte): integer;<br \/>\nbegin<br \/>\nFac := Fac(n-1) * n;<br \/>\nend;<\/span><\/p>\n<p>De code hierboven werkt overigens niet naar behoren. Mocht je dit toch in een programma doen, dan krijg je een run-time error.<br \/>\nHet probleem is namelijk dat de functie zichzelf aanroept, maar zoals hierboven geprogrammeerd daar eindeloos mee doorgaat. Daar het geheugen van een computer eindig is komt er een punt van conflict, vandaar de run-time error.<\/p>\n<p>Even tussen haakjes: (het geheugen waar we hier over praten is het stack-geheugen. Dat is een stukje geheugen, dat een programmeertaal reserveert om tussentijdse zaken op te slaan. Dit stukje geheugen is vaak zeer beperkt en dat leidt als snel tot een stack-overflow.).<\/p>\n<p>We moeten er dus voor zorgen dat de aanroep van zichzelf op enig moment stopt.<br \/>\nIn het geval van faculteiten moeten we kijken naar de (wiskundige) definitie:<br \/>\nvanwege wiskundig gemak is 0! gedefinieerd als 1, dus 0!=1. Voor alle overige (positief gehele) getallen geldt bovenstaande regel.<br \/>\nDe stop zit dus kennelijk bij 0. In de code kunnen we dit met een if-constructie testen.<\/p>\n<p><span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">function Fac(n: byte): integer;<br \/>\nbegin<br \/>\nif n = 0 then<br \/>\nFac := 1<br \/>\nelse<br \/>\nFac := Fac(n-1) * n;<br \/>\nend;<\/span><\/p>\n<p><b>BELANGRIJK: Bij een recursieve functie (of procedure) moet je\u00a0<u>ALTIJD<\/u>\u00a0een stop inbouwen!<\/b><\/p>\n<p>Wanneer maak je nu goed gebruik van dit mechanisme? Om een antwoord te vinden op die vraag moete we eerst de eigenschappen van recursie tegenover die van iteratie zetten.<br \/>\nDe voordelen van recursie t.o.v. iteratie zijn:<br \/>\n&#8211; gemakkelijk te coderen (als het onderwerp nieuw is, dan na enige oefening)<br \/>\n&#8211; vaak korte code<br \/>\n&#8211; soms onvermijdbaar<\/p>\n<p>De nadelen van recursie t.o.v. iteratie zijn:<br \/>\n&#8211; aanslag op geheugen en daardoor<br \/>\n&#8211; trage(re) uitvoering<\/p>\n<p>Het antwoord op bovenstaande vraag luidt (hoewel enigszins subjectief):<br \/>\nRecursie gebruik je wanneer een iteratieve oplossing dan wel te ingewikkeld, dan wel onmogelijk is.<br \/>\nIn alle andere gevallen maak je gebruik van iteratieve oplossingen!<\/p>\n<p>Voor een non-voorbeeld van recursie verwijs ik hier naar\u00a0<a href=\"p11.html#11.2\">opgave 11.2<\/a>.<\/p>\n<p>Een mooi voorbeeld waar een iteratieve oplossing niet voor de hand ligt (onmogelijk is??) is de &#8217;torens van Hanoi&#8217;.<br \/>\nHet verhaal gaat dat er ooit (ergens in de middeleeuwen) in de buurt van Hanoi een kloosterorde was die het volgende had bedacht:<br \/>\nHet einde van de wereld is nabij en wij kunnen aangeven wanneer, en wel als volgt:<br \/>\nWe hebben 3 palen en 64 massief stenen schijven (met in het midden een gat) met allemaal verschillende diameter.<br \/>\nWe leggen alle schijven om de eerste paal van groot (onder) tot klein (boven).<br \/>\nNu gaan we ervoor zorgen dat deze stapel schijven van paal 1 naar paal 3 wordt verplaatst onder de volgende twee condities:<br \/>\nPer zet mag slechts 1 schijf worden verplaatst en er mag nooit een grotere schijf boven een kleinere komen.<br \/>\nWanneer we hiermee klaar zijn zal de wereld vergaan!<br \/>\nMaakt u zich vooral niet druk dat u dit nog zal meemaken. Dit proces neemt minstens 213.503.982.335 millenia in beslag, onder de aanname dat de monikken 1 zet per seconde doen en geen fouten maken. En daarbij zal de aarde dan inderdaad al vergaan zijn!<\/p>\n<p>Laten we eens bescheiden doen en eens kijken of we het spelletje met de 3 palen en schijven kunnen oplossen met iets minder schijven.<br \/>\nWe gaan eerst eens kijken met 1 schijf. De palen noemen we even A, B en C. De uitgangspositie zal steeds alle schijven op paal A zijn.<br \/>\nHet doel om de schijven naar paal C te krijgen, waarbij paal B als hulp-paal dient.<br \/>\nDe oplossing voor 1 schijf is gemakkelijk, nl: verplaats de schijf van paal A naar paal C en klaar. We noteren dit als A-&gt;C.<br \/>\nMet 2 schijven gat het als volgt: A-&gt;B, A-&gt;C, B-&gt;C. Teken de stappen maar uit als je het niet direct ziet.<br \/>\nMet 3 schijven is dit de oplossing: A-&gt;C, A-&gt;B, C-&gt;B, A-&gt;C, B-&gt;A, B-&gt;C, A-&gt;C.<br \/>\nMet 1 schijf zijn we in 1 beurt klaar, met 2 schijven hebben we 3 beurten nodig en met 3 schijven 7 beurten.<br \/>\nHoeveel beurten hebben we met n schijven nodig? Wel dat is n\u00b2-1. Met 64 schijven is dat een gigantisch getal.<\/p>\n<p>Kunnen we de oplossing van dit probleem programmeren? Een iteratieve oplossing heb ik nog nooit gevonden (behalve een flauwe, waarbij je zelf recursie programmeert). Eer recursieve oplossing daarentegen is zeer gemakkelijk.<br \/>\nDe recursieve oplossing vertaald in vrij Nederlands luidt:<br \/>\nAls er 1 schijf is verplaats die dan van paal A naar paal C.<br \/>\nZijn er meer schijven dan:<br \/>\n1. Verplaats alle schijven behalve de onderste van paal A naar paal B,<br \/>\n2. Verplaats de schijf van paal A naar paal C,<br \/>\n3.Verplaats alle schijven van paal B naar paal C.<\/p>\n<p>Merk op dat de recursie in stap 1 en stap 3 zit.<br \/>\nOk, hier komt de procedure:<\/p>\n<p><span style=\"font-family: courier new; font-size: small;\"><span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">procedure Verplaats(n: Byte;p1, p2, p3: char);<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">begin<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 if n=1 then<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 write(p1,&#8217;-&gt;&#8217;,p3)<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 else<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 begin<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 Verplaats(n-1,p1,p3,p2);<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 write(p1,&#8217;-&gt;&#8217;,p3);<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 Verplaats(n-1,p2,p1,p3);<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 end;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">end;<\/span><b><br \/>\n<\/b><\/span><br \/>\nJe kunt de procedure\u00a0<b>Verplaats(n, p1, p2, p3)<\/b>\u00a0het beste lezen als: verplaats n stenen van p1 via p2 naar p3.<br \/>\nOm de oplossingen te krijgen zoals hierboven genoteerd roep je de procedure als volgt aan: Verplaats(3,&#8217;A&#8217;,&#8217;B&#8217;,&#8217;C&#8217;).<br \/>\nVoor verdere uitvoer zie\u00a0<a href=\"p11.html#11.3\">opgave 11.3<\/a>.<\/p>\n<h2>Oefeningen.<\/h2>\n<p><a name=\"11.1\"><\/a><b>11.1<\/b><br \/>\nMaak een functie\u00a0<b>FacIter(n: byte): integer<\/b>, die d.m.v. een vermenigvuldiging de faculteit van n uitrekent. [<a href=\"https:\/\/wiskunst.nl\/index.php\/programmeren\/oefeningen\/#11.1\" target=\"_blank\" rel=\"noopener\">Antwoord<\/a>]\n<p><a name=\"11.2\"><\/a><b>11.2<\/b><br \/>\nDe rij van Fibonacci ziet er als volgt uit: 1, 1, 2, 3, 5, 8, 13, 21, 34, &#8230;(zie ook opgave\u00a0<a href=\"https:\/\/wiskunst.nl\/index.php\/programmeren\/functies\/#9.1\">9.1<\/a>)<br \/>\nDe eerste 2 termen zijn 1, de daarop volgende termen is steeds de som van de voorgaande twee termen.<br \/>\nSchrijf een programma dat de n-de term van de rij van Fibonacci berekent.<br \/>\nMaak in je programma gebruik van een recursieve functie FibRec en een iteratieve functie FibIter.<br \/>\nLaat het programma de n-de term als invoer aan de gebruiker vragen, waarna<br \/>\nhet programma eerst de uitkomst van FibIter laat zien en daarna de uitkomst van FibRec.<br \/>\nExperimenteer met steeds grotere waarde van n (doe dat in kleine stapjes!). Let daarbij niet op de uitkomst.<br \/>\nMerk op dat FibRec er steeds langer over gaat doen en probeer hiervoor een verklaring te geven.[<a href=\"https:\/\/wiskunst.nl\/index.php\/programmeren\/oefeningen\/#11.2\" target=\"_blank\" rel=\"noopener\">Antwoord<\/a>]\n<p><a name=\"11.3\"><\/a><b>11.3<\/b><br \/>\nMaak een programma dat de &#8217;torens van hanoi&#8217; speelt.<br \/>\nHet aantal stenen moet als invoer door de gebruiker worden gegeven. [<a href=\"https:\/\/wiskunst.nl\/index.php\/programmeren\/oefeningen\/#11.3\" target=\"_blank\" rel=\"noopener\">Antwoord<\/a>]\n<p><b>11.4<\/b><br \/>\nSchrijf een recursieve functie\u00a0<b>Keerom(s: s80): s80<\/b>\u00a0die de string s omdraait, waarbij s80 als string[80] is gedefinieerd. [<a href=\"https:\/\/wiskunst.nl\/index.php\/programmeren\/oefeningen\/#11.4\" target=\"_blank\" rel=\"noopener\">Antwoord<\/a>]\n<p><b>11.5<\/b><br \/>\nSchrijf een recursieve functie\u00a0<b>Keer(a,b: integer): integer<\/b>, die middels herhaald optellen axb uitrekent. [<a href=\"https:\/\/wiskunst.nl\/index.php\/programmeren\/oefeningen\/#11.5\" target=\"_blank\" rel=\"noopener\">Antwoord<\/a>]\n<p><b>11.6<\/b><br \/>\nBekijk onderstaande functie:<\/p>\n<p><span style=\"font-family: courier new; font-size: small;\"><span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">function V(a,b: integer): integer;<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">begin<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 if a=1 then<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 V := b<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 else<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 if a mod 2 = 1 then {als a oneven is}<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 V := V(a div 2, b * 2) + b { met div reken je de gehele deling uit, het deel rechts van de staartdeling}<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 else<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">\u00a0 \u00a0 \u00a0 V := V(a div 2, b * 2)<\/span><br \/>\n<span style=\"font-family: 'courier new', courier, monospace; font-size: 12pt;\">end;<\/span><b><br \/>\n<\/b><\/span><br \/>\nVerklaar zonder deze functie te implementeren wat deze functie met\u00a0<i>a<\/i>\u00a0en\u00a0<i>b<\/i>\u00a0doet. [<a href=\"https:\/\/wiskunst.nl\/index.php\/programmeren\/oefeningen\/#11.6\" target=\"_blank\" rel=\"noopener\">Antwoord<\/a>]\n<p> [<a href=\"https:\/\/wiskunst.nl\/index.php\/programmeren\/bestanden\/\">Bestanden<\/a>] &lt;&#8211; &#8211;&gt; [<a href=\"https:\/\/wiskunst.nl\/index.php\/programmeren\/gestructureerde-types\/\">Gestructureerde types<\/a>]\n<p> <span style=\"font-size: 8pt;\">[<a href=\"https:\/\/wiskunst.nl\/index.php\/raadseltjes\/oplssing-raadsel-4\/\" target=\"_blank\" rel=\"noopener\">Oplossing raadsel 4<\/a>]<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In de wiskunde bestaan er zogenaamde recurente betrekkingen. Dit zijn betrekkingen die worden uitgedrukt in termen van zichzelf. Bij de meeste programmeertalen is dit principe ook bekend en wordt het daar\u00a0recursie\u00a0genoemd. In Pascal kun je recursie vinden bij procedures en functies. Het bovenstaande klinkt allemaal misschien wat vaag en abstract, dus laten we maar eens [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":185,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"templates\/template-full-width.php","meta":{"_lmt_disableupdate":"","_lmt_disable":"","footnotes":""},"class_list":["post-208","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Recursie - Wiskunst<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/wiskunst.nl\/index.php\/programmeren1\/programmeren\/recursie\/\" \/>\n<meta property=\"og:locale\" content=\"nl_NL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Recursie - Wiskunst\" \/>\n<meta property=\"og:description\" content=\"In de wiskunde bestaan er zogenaamde recurente betrekkingen. Dit zijn betrekkingen die worden uitgedrukt in termen van zichzelf. Bij de meeste programmeertalen is dit principe ook bekend en wordt het daar\u00a0recursie\u00a0genoemd. In Pascal kun je recursie vinden bij procedures en functies. Het bovenstaande klinkt allemaal misschien wat vaag en abstract, dus laten we maar eens [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/wiskunst.nl\/index.php\/programmeren1\/programmeren\/recursie\/\" \/>\n<meta property=\"og:site_name\" content=\"Wiskunst\" \/>\n<meta property=\"article:modified_time\" content=\"2022-01-24T08:42:26+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Geschatte leestijd\" \/>\n\t<meta name=\"twitter:data1\" content=\"7 minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/wiskunst.nl\\\/index.php\\\/programmeren1\\\/programmeren\\\/recursie\\\/\",\"url\":\"https:\\\/\\\/wiskunst.nl\\\/index.php\\\/programmeren1\\\/programmeren\\\/recursie\\\/\",\"name\":\"Recursie - Wiskunst\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/wiskunst.nl\\\/#website\"},\"datePublished\":\"2022-01-20T14:54:51+00:00\",\"dateModified\":\"2022-01-24T08:42:26+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/wiskunst.nl\\\/index.php\\\/programmeren1\\\/programmeren\\\/recursie\\\/#breadcrumb\"},\"inLanguage\":\"nl-NL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/wiskunst.nl\\\/index.php\\\/programmeren1\\\/programmeren\\\/recursie\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/wiskunst.nl\\\/index.php\\\/programmeren1\\\/programmeren\\\/recursie\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/wiskunst.nl\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Programmeren\",\"item\":\"https:\\\/\\\/wiskunst.nl\\\/index.php\\\/programmeren1\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Programmeren met Pascal\",\"item\":\"https:\\\/\\\/wiskunst.nl\\\/index.php\\\/programmeren1\\\/programmeren\\\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Recursie\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/wiskunst.nl\\\/#website\",\"url\":\"https:\\\/\\\/wiskunst.nl\\\/\",\"name\":\"Wiskunst\",\"description\":\"2\u221e\u2227&gt;\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/wiskunst.nl\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"nl-NL\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Recursie - Wiskunst","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/wiskunst.nl\/index.php\/programmeren1\/programmeren\/recursie\/","og_locale":"nl_NL","og_type":"article","og_title":"Recursie - Wiskunst","og_description":"In de wiskunde bestaan er zogenaamde recurente betrekkingen. Dit zijn betrekkingen die worden uitgedrukt in termen van zichzelf. Bij de meeste programmeertalen is dit principe ook bekend en wordt het daar\u00a0recursie\u00a0genoemd. In Pascal kun je recursie vinden bij procedures en functies. Het bovenstaande klinkt allemaal misschien wat vaag en abstract, dus laten we maar eens [&hellip;]","og_url":"https:\/\/wiskunst.nl\/index.php\/programmeren1\/programmeren\/recursie\/","og_site_name":"Wiskunst","article_modified_time":"2022-01-24T08:42:26+00:00","twitter_card":"summary_large_image","twitter_misc":{"Geschatte leestijd":"7 minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/wiskunst.nl\/index.php\/programmeren1\/programmeren\/recursie\/","url":"https:\/\/wiskunst.nl\/index.php\/programmeren1\/programmeren\/recursie\/","name":"Recursie - Wiskunst","isPartOf":{"@id":"https:\/\/wiskunst.nl\/#website"},"datePublished":"2022-01-20T14:54:51+00:00","dateModified":"2022-01-24T08:42:26+00:00","breadcrumb":{"@id":"https:\/\/wiskunst.nl\/index.php\/programmeren1\/programmeren\/recursie\/#breadcrumb"},"inLanguage":"nl-NL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/wiskunst.nl\/index.php\/programmeren1\/programmeren\/recursie\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/wiskunst.nl\/index.php\/programmeren1\/programmeren\/recursie\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/wiskunst.nl\/"},{"@type":"ListItem","position":2,"name":"Programmeren","item":"https:\/\/wiskunst.nl\/index.php\/programmeren1\/"},{"@type":"ListItem","position":3,"name":"Programmeren met Pascal","item":"https:\/\/wiskunst.nl\/index.php\/programmeren1\/programmeren\/"},{"@type":"ListItem","position":4,"name":"Recursie"}]},{"@type":"WebSite","@id":"https:\/\/wiskunst.nl\/#website","url":"https:\/\/wiskunst.nl\/","name":"Wiskunst","description":"2\u221e\u2227&gt;","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/wiskunst.nl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"nl-NL"}]}},"_links":{"self":[{"href":"https:\/\/wiskunst.nl\/index.php\/wp-json\/wp\/v2\/pages\/208","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wiskunst.nl\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/wiskunst.nl\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/wiskunst.nl\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wiskunst.nl\/index.php\/wp-json\/wp\/v2\/comments?post=208"}],"version-history":[{"count":9,"href":"https:\/\/wiskunst.nl\/index.php\/wp-json\/wp\/v2\/pages\/208\/revisions"}],"predecessor-version":[{"id":546,"href":"https:\/\/wiskunst.nl\/index.php\/wp-json\/wp\/v2\/pages\/208\/revisions\/546"}],"up":[{"embeddable":true,"href":"https:\/\/wiskunst.nl\/index.php\/wp-json\/wp\/v2\/pages\/185"}],"wp:attachment":[{"href":"https:\/\/wiskunst.nl\/index.php\/wp-json\/wp\/v2\/media?parent=208"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}