Курс языка программирования Raku / Функциональное, конкурентное, реактивное и веб-программирование / Функциональное программирование / Рекурсия
Рекурсивная подпрограмма
Рекурсивная подпрограмма — это та, которая вызывает саму
себя. Классический пример — факториал: факториал n равен
n, умноженному на факториал n - 1.
sub fact($n) {
$n <= 1 ?? 1 !! $n * fact($n - 1);
}
say fact(5); # 120Прочитайте тело как два случая, соединённых тернарным оператором
?? !!:
- когда
$nравно1или меньше, ответ — просто1; - иначе ответ — это
$n, умноженное наfact($n - 1), то есть на ту же подпрограмму, вызванную с меньшим числом.
Каждый вызов отслаивает один множитель и запрашивает меньший
факториал, пока число не дойдёт до 1, после чего вызовы
разворачиваются обратно: fact(5) — это
5 * fact(4), что есть 5 * 4 * fact(3) и так
далее вниз до 1.
Рекурсия выражает многие задачи очень прямо. Всякий раз, когда задачу можно описать через её меньший вариант, рекурсивная подпрограмма часто оказывается самым естественным способом её записать.
Практика
Пройдите 1 тест по содержанию этой темы.
Навигация по курсу
← Рекурсия | Тест — Рекурсия →
💪 Или перейдите сразу к упражнениям этого
раздела.