Курс 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 тест за змістом цієї теми.

Навігація курсом

Рекурсія   |   Тест — Рекурсія


💪 Або перейдіть одразу до вправ цього розділу.