Курс Raku / Функційне, конкурентне, реактивне та веб-програмування / Функційне програмування / Рекурсія

Базовий випадок

Кожній рекурсивній підпрограмі потрібен базовий випадок: умова, за якої вона повертає відповідь, не викликаючи себе знову. Без нього підпрограма викликала б себе вічно.

У факторіалі базовим випадком було «$n дорівнює 1 або менше». Ось інший приклад — зворотний відлік до нуля:

sub countdown($n) {
    return if $n < 1;   # базовий випадок: зупинка
    say $n;
    countdown($n - 1);  # рекурсивний крок
}

countdown(3);

Програма друкує:

3
2
1

Перший рядок є базовим випадком: коли $n падає нижче за 1, підпрограма негайно повертається, і ланцюжок викликів завершується. Рекурсивний крок завжди рухається до базового випадку, викликаючи countdown із меншим числом.

Якщо ви забудете базовий випадок або кроки ніколи його не досягнуть, рекурсія не зупиниться, і програма зрештою впаде. Правильна рекурсивна підпрограма завжди має дві речі: базовий випадок, що завершує рекурсію, і крок, який наближає кожен виклик до нього.

Практика

Виконайте 1 тест за змістом цієї теми.

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

Тест — Рекурсія   |   Тест — Базовий випадок


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