Kurso de Raku / Funkcia, samtempa, reaktiva kaj reta programado / Funkcia programado / Rekursio
Rekursia subprogramo
Rekursia subprogramo estas tia, kiu vokas sin mem. La
klasika ekzemplo estas la faktorialo: la faktorialo de n
estas n foje la faktorialo de n - 1.
sub fact($n) {
$n <= 1 ?? 1 !! $n * fact($n - 1);
}
say fact(5); # 120Legu la korpon kiel du kazojn kunigitajn per la ternara operatoro
?? !!:
- kiam
$nestas1aŭ malpli, la respondo estas simple1; - alie, la respondo estas
$nfojefact($n - 1)— la sama subprogramo vokita kun pli malgranda nombro.
Ĉiu voko deprenas unu faktoron kaj petas pli malgrandan faktorialon,
ĝis la nombro atingas 1 kaj la vokoj malvolviĝas:
fact(5) estas 5 * fact(4), kio estas
5 * 4 * fact(3), kaj tiel plu ĝis 1.
Rekursio esprimas multajn problemojn tre rekte. Kiam ajn tasko povas esti priskribita per pli malgranda versio de si mem, rekursia subprogramo estas ofte la plej natura maniero skribi ĝin.
Praktiko
Vin atendas 1 kvizo pri la enhavo de ĉi tiu temo.
Kursa navigado
← Rekursio | Kvizo — Rekursio →
💪 Aŭ iru rekte al la ekzercoj de ĉi tiu
sekcio.