Курс Raku / Функційне, конкурентне, реактивне та веб-програмування / Функційне програмування / Рекурсія / Рекурсія з multi-підпрограмами
Тест — Рекурсія з multi-підпрограмами
Маємо multi fact(0) { 1 } та
multi fact($n) { $n * fact($n - 1) }. Яку роль відіграє
кандидат multi fact(0)?
| 1 | Це базовий випадок — кандидат, якого диспетчеризація обирає, коли аргумент дорівнює 0 |
| 0 | Він задає типове значення, що повертається для будь-якого аргументу |
| 0 | Він виконується першим на кожному виклику, перед іншим кандидатом |
| 0 | Це обов'язковий синтаксис, який Raku ігнорує під час виконання |
Літерал 0 у сигнатурі робить так, що цей кандидат
підходить лише тоді, коли аргумент дорівнює точно 0. Це
базовий випадок, виражений власною підпрограмою: поки аргумент більший,
диспетчеризація й далі обирає multi fact($n), а щойно
рекурсія досягає 0, вона перемикається на
multi fact(0) і зупиняється.