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 (bijvoorbeeld 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 uitleg om te begrijpen hoe dit werkt:
times = 3→ voorwaarde is waar, bericht wordt afgedrukt, roeptprint_message(message, 2)aan;times = 2→ voorwaarde is waar, bericht wordt afgedrukt, roeptprint_message(message, 1)aan;times = 1→ voorwaarde is waar, bericht wordt afgedrukt, roeptprint_message(message, 0)aan;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 zal de functie zichzelf oneindig blijven aanroepen en een RecursionError veroorzaken.
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, retourneer dan0— dit is het basisgeval; - Anders, scheid het eerste element van de rest. Retourneer het eerste element (
numbers[0]) opgeteld bij het resultaat van opnieuw aanroepen vanlist_sum()met de rest van de lijst (numbers[1:]).
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.