Курс по 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 тест върху съдържанието на тази тема.
Навигация в курса
← Рекурсия | Тест — Рекурсия →
💪 Или преминете направо към упражненията в този
раздел.