Singelaar schreef op vrijdag 10 december 2021 @ 09:45:
[...]
Ik ben ook self-taught. Het geeft mij juist zelf vertrouwen te zien dat ik dit soort dingen weet op te lossen die andere tijdens een studie doorgrond hebben. -> Maar ik ben misschien dan ook weer wat arrogant
Waar ik overigens altijd wel heel erg stuk op ga zijn opdrachten die recursie vragen. Heeft iemand een website met oefeningen waarbij ik daar eens wat over kan leren? Ik zou dat graag door krijgen.
Recursie (heel platgeslagen):
je hebt een heel grote dataset met veel te veel info om in een keer (overzichtelijk) op te lossen (kan ook op andere manieren

)
Stel je hebt een stamboom:
.................A
.................|
.....B-------C----------D
.....| ........ |........ .... |
E-----F...G---H .....I----J
Wat je met recursion kan doen is een functie schrijven:
Geef me alle waarden van x terug
Als je dan de functie aanroept voor x=A, kijg je [B,C,D] terug.
Vervolgens kan je
dezelfde functie aanroepen voor x=B ([E,F]), x=C ([G, H]), x=D([I,J]), en zo kan je tot je maximale recursiediepte (meestal rond de 1000) door de diepte in.
Ofwel, je roept dezelfde functie telkens aan om dieper de stamboom in te duiken en steeds met een kleinere (gesprecialiseerdere) dataset hetzelfde te doen tot je iets vindt wat voor jouw probleem interessant is.
Stel in bovenstaande stamboom:
E = 1
F = 2
G = 3
H = 4
I = 5
J = 1
En de vraag is: van dataset A, vind alle kinderen die de waarde 1 hebben.
Dan kan je vanaf A naar B, C en E, en zo steeds verder de diepte in om uiteindelijk een waarde van 1 te vinden (E en J).
Vervolgens kan je in je recursive functie ook iets toevoegen als:
Als waarde == 1: voeg toe aan een lijst/dict/whatever buiten deze functie (of geef het terug aan de vorige iteratie((recursion_result = recusive(x)) en ga door met de volgende waarde voor x.
Vervolgens, als je alle kinderen van alle stamboom-members bent afgegaan, heb je een resultaat over alle waarden die 1 zijn (in dit geval 2)
Je kan ook bijvoorbeeld een getal zichzelf laten vermenigvuldigen totdat een bepaalde waarde is bereikt (dit hoeft niet recursief, maar het kan wel)
verder zijn er een veeltal sites te vinden met een goede uitleg (zoals
https://www.geeksforgeeks.org/recursion/)