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

Розв’язання: Трикутне число

Ось одне з можливих розв’язань задачі.

Код

multi tri(0)  { 0 }
multi tri($n) { $n + tri($n - 1) }

say tri(5);

🦋 Знайдіть програму у файлі triangular-number.raku.

Вивід

15

Коментарі

  1. Базовий випадок є окремим кандидатом: multi tri(0) підходить лише тоді, коли аргумент дорівнює точно 0, і повертає 0 без рекурсії.

  2. Кожен інший виклик потрапляє в multi tri($n), який додає $n до трикутного числа від $n - 1. Виклики спускаються 5 + 4 + 3 + 2 + 1 + 0, а коли аргумент досягає 0, диспетчеризація перемикається на кандидата з базовим випадком, і сума розкручується назад у 15.

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

Трикутне число   |   Функції вищого порядку