Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Recursie | Recursie en Lambda-Functies
Python Functies Tutorial
Sectie 5. Hoofdstuk 1
single

single

Recursie

Veeg om het menu te tonen

Note
Definitie

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

123456
def 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:

  1. times = 3 → voorwaarde is waar, bericht wordt afgedrukt, roept print_message(message, 2) aan;
  2. times = 2 → voorwaarde is waar, bericht wordt afgedrukt, roept print_message(message, 1) aan;
  3. times = 1 → voorwaarde is waar, bericht wordt afgedrukt, roept print_message(message, 0) aan;
  4. 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.

Note
Opmerking

Elke recursieve functie moet een basisgeval hebben. Zonder dit zal de functie zichzelf oneindig blijven aanroepen en een RecursionError veroorzaken.

Taak

Veeg om te beginnen met coderen

Implementeer een recursieve functie list_sum die de som berekent van alle elementen in een lijst.

  1. Als de lijst numbers leeg is, retourneer dan 0 — dit is het basisgeval;
  2. Anders, scheid het eerste element van de rest. Retourneer het eerste element (numbers[0]) opgeteld bij het resultaat van opnieuw aanroepen van list_sum() met de rest van de lijst (numbers[1:]).

Oplossing

Switch to desktopSchakel over naar desktop voor praktijkervaringGa verder vanaf waar je bent met een van de onderstaande opties
Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 5. Hoofdstuk 1
single

single

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

some-alt