single
Recursie
Veeg om het menu te tonen
Een recursieve functie is een functie die zichzelf aanroept om een probleem op te lossen door het op te splitsen in kleinere, eenvoudigere delen.
De belangrijkste elementen van recursie zijn:
- Basisgeval: de voorwaarde die de recursie stopt;
- Recursief geval: het deel waar de functie zichzelf aanroept met een eenvoudiger invoer.
Waarom recursie gebruiken?
Sommige problemen kunnen op een natuurlijke manier worden uitgedrukt in termen van kleinere deelproblemen. Recursie biedt een overzichtelijke en elegante manier om deze op te lossen door een functie zichzelf te laten aanroepen voor de eenvoudigere gevallen. Het wordt vaak gebruikt bij taken zoals het verwerken van bomen, het verkennen van paden of het opdelen van structuren (zoals lijsten, strings).
Een eenvoudig voorbeeld
123456def print_message(message, times): if times > 0: # Base case: stop when times is 0 print(message) print_message(message, times - 1) # Recursive case print_message("Hello, Recursion!", 3)
Stap voor stap uitleggen hoe dit werkt:
times = 3→ voorwaarde is waar, bericht wordt afgedrukt, aanroepprint_message(message, 2);times = 2→ voorwaarde is waar, bericht wordt afgedrukt, aanroepprint_message(message, 1);times = 1→ voorwaarde is waar, bericht wordt afgedrukt, aanroepprint_message(message, 0);times = 0→ voorwaarde is onwaar, recursie stopt.
Resultaat: het bericht wordt drie keer afgedrukt.
De aanroepstack
Elke keer dat de functie zichzelf aanroept, wordt er een nieuw frame toegevoegd aan de aanroepstack — een geheugenstructuur die actieve functieaanroepen bijhoudt. Zodra het basisgeval is bereikt, wordt elke vorige aanroep één voor één in omgekeerde volgorde afgerond.
Elke recursieve functie moet een basisgeval hebben. Zonder dit blijft de functie zichzelf oneindig aanroepen en veroorzaakt een RecursionError.
Veeg om te beginnen met coderen
Implementeer een recursieve functie list_sum die de som berekent van alle elementen in een lijst.
- Als de lijst
numbersleeg is, retourneer0— dit is het basisgeval; - Anders retourneer het eerste element opgeteld bij het resultaat van een recursieve aanroep met de rest van de lijst.
Oplossing
Bedankt voor je feedback!
single
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.