Kurso de Raku / Funkcia, samtempa, reaktiva kaj reta programado / Funkcia programado / Rekursio / Rekursio per multi-subprogramoj
Kvizo — Rekursio per multi-subprogramoj
Donite multi fact(0) { 1 } kaj
multi fact($n) { $n * fact($n - 1) }, kian rolon ludas la
kandidato multi fact(0)?
| 1 | Ĝi estas la baza kazo — la kandidato, kiun la disdono elektas, kiam la argumento estas 0 |
| 0 | Ĝi starigas defaŭltan valoron redonatan por ĉiu argumento |
| 0 | Ĝi ruliĝas unue ĉe ĉiu voko, antaŭ la alia kandidato |
| 0 | Ĝi estas postulata sintakso, kiun Raku ignoras je rultempo |
La literalo 0 en la subskribo igas tiun kandidaton
kongrui nur, kiam la argumento estas ekzakte 0. Ĝi estas la
baza kazo esprimita kiel propra subprogramo: dum la argumento estas pli
granda, la disdono daŭre elektas multi fact($n), kaj post
kiam la rekursio atingas 0, ĝi ŝanĝiĝas al
multi fact(0) kaj haltas.