Курс 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 тест за змістом цієї теми.
Навігація курсом
← Рекурсія | Тест — Рекурсія →
💪 Або перейдіть одразу до вправ цього розділу.