Курс Raku / Функційне, конкурентне, реактивне та веб-програмування / Функційне програмування / Рекурсія / Вправи / Трикутне число
Розв’язання: Трикутне число
Ось одне з можливих розв’язань задачі.
Код
multi tri(0) { 0 }
multi tri($n) { $n + tri($n - 1) }
say tri(5);🦋 Знайдіть програму у файлі triangular-number.raku.
Вивід
15Коментарі
Базовий випадок є окремим кандидатом:
multi tri(0)підходить лише тоді, коли аргумент дорівнює точно0, і повертає0без рекурсії.Кожен інший виклик потрапляє в
multi tri($n), який додає$nдо трикутного числа від$n - 1. Виклики спускаються5 + 4 + 3 + 2 + 1 + 0, а коли аргумент досягає0, диспетчеризація перемикається на кандидата з базовим випадком, і сума розкручується назад у15.