Курс по Raku / Функционално, паралелно, реактивно и уеб програмиране / Функционално програмиране / Рекурсия
Базовият случай
Всяка рекурсивна подпрограма се нуждае от базов случай: условие, при което тя връща отговор, без да се извиква отново. Без него подпрограмата би се извиквала вечно.
При факториела базовият случай беше „$n е 1
или по-малко“. Ето друг пример — обратно броене до нула:
sub countdown($n) {
return if $n < 1; # базов случай: спираме
say $n;
countdown($n - 1); # рекурсивна стъпка
}
countdown(3);Програмата отпечатва:
3
2
1Първият ред е базовият случай: когато $n падне под
1, подпрограмата се връща незабавно и веригата от
извиквания завършва. Рекурсивната стъпка винаги се движи
към базовия случай, като извиква countdown
с по-малко число.
Ако забравите базовия случай или стъпките никога не стигнат до него, рекурсията не спира и програмата в крайна сметка се проваля. Правилната рекурсивна подпрограма винаги има две неща: базов случай, който прекратява рекурсията, и стъпка, която приближава всяко извикване до него.
Практика
Направете 1 тест върху съдържанието на тази тема.
Навигация в курса
← Тест — Рекурсия | Тест — Базовият случай →
💪 Или преминете направо към упражненията в този
раздел.