Cursus Raku / Functioneel, concurrent, reactief en webprogrammeren / Functioneel programmeren / Recursie
Een recursieve subroutine
Een recursieve subroutine is er een die zichzelf aanroept.
Het klassieke voorbeeld is de faculteit: de faculteit van n
is n maal de faculteit van n - 1.
sub fact($n) {
$n <= 1 ?? 1 !! $n * fact($n - 1);
}
say fact(5); # 120Lees de body als twee gevallen die door de ternaire operator
?? !! verbonden zijn:
- wanneer
$n1of minder is, is het antwoord eenvoudigweg1; - anders is het antwoord
$nmaalfact($n - 1)— dezelfde subroutine aangeroepen met een kleiner getal.
Elke aanroep pelt één factor af en vraagt om een kleinere faculteit,
tot het getal 1 bereikt en de aanroepen zich afwikkelen:
fact(5) is 5 * fact(4), wat
5 * 4 * fact(3) is, en zo verder omlaag tot
1.
Recursie drukt veel problemen heel rechtstreeks uit. Zodra een taak beschreven kan worden in termen van een kleinere versie van zichzelf, is een recursieve subroutine vaak de natuurlijkste manier om haar te schrijven.
Praktijk
Maak de 1 quiz over de inhoud van dit onderwerp.
Cursusnavigatie
← Recursie | Quiz — Recursie →
💪 Of ga direct naar de oefeningen in deze
sectie.