Een functie die zichzelf aanroept

Syntaxis en waarden

Een functie kan een kleinere versie van een probleem oplossen door zichzelf aan te roepen. Dat heet recursie. Er is een stopgeval nodig, net zoals een herhalende lus een manier nodig heeft om klaar te zijn.

Directe recursie is toegestaan: een functie kan haar eigen naam zien. Een recursieve functie heeft een basisgeval nodig om te stoppen. De runtime begrenst de diepte en meldt overschrijding gestructureerd in plaats van de hoststack te laten overlopen. Sessieruntimes maken de grens instelbaar; gegenereerde native programma’s gebruiken maximaal 256 geneste gebruikersaanroepen. Wederzijdse vooruitverwijzingen zijn niet ondersteund.

Gedrag en details

Het voorbeeld stopt bij n <= 1 en maakt voortgang door vóór de volgende aanroep één af te trekken. Het toont 120. Aanroepen volgen verder bronvolgorde; directe zelfrecursie maakt latere functiedeclaraties niet zichtbaar.

Voorbeeld

# taal: nl
functie factorial(n):
    als n <= 1:
        geef 1
    geef n * factorial(n - 1)
zeg factorial(5)

Gerelateerde lemma’s

Syntaxis en waarden · Ingebouwde functies · Programmeergidsen