Cursus Raku / Functioneel, concurrent, reactief en webprogrammeren / Functioneel programmeren / Recursie / Exercises / Driehoeksgetal
Oplossing: Driehoeksgetal
Hier is een mogelijke oplossing voor de taak.
Code
multi tri(0) { 0 }
multi tri($n) { $n + tri($n - 1) }
say tri(5);🦋 Je kunt de broncode vinden in het bestand triangular-number.raku.
Uitvoer
15Opmerkingen
Het basisgeval is een eigen kandidaat:
multi tri(0)matcht alleen wanneer het argument precies0is en geeft0terug zonder recursie.Elke andere aanroep belandt in
multi tri($n), die$noptelt bij het driehoeksgetal van$n - 1. De aanroepen dalen af langs5 + 4 + 3 + 2 + 1 + 0, en wanneer het argument0bereikt schakelt de dispatch naar de basisgevalkandidaat en wikkelt de som zich af tot15.