Курс языка программирования 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) и останавливается.