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

Навигация по курсу

Рекурсия с multi-подпрограммами   |   Степень