Курс Раку / Основи / Більше про функції / Вправи / Факторіал з мульти-функціями
Рішення: Факторіал з мульти-функціями
Ця вправа знову про факторіали. Дійсно, завдання дозволяє нам проілюструвати більше можливостей Raku.
При обчисленні факторіала, починаючи з заданого числа і рухаючись вниз, потрібно зупинитися, коли число стане 1. За допомогою multi-функцій ви можете досягти цього, виділивши випадок з $n == 1
в окрему multi-функцію.
Код
Ось розв’язок:
multi sub factorial(1) { 1 }
multi sub factorial($n) { $n * factorial($n - 1) }
say factorial(@*ARGS[0].Int);
🦋 Знайдіть програму у файлі factorial-with-multi-functions.raku.
Вивід
$ raku exercises/more-on-functions/factorial-with-multi-functions.raku 5
120
Коментар
Зверніть увагу, що вхідний аргумент явно перетворюється на ціле число: @*ARGS[0].Int
. Це для запобігання нескінченному циклу, коли вхідне число дорівнює 1
. У цьому випадку тип параметра, переданого до функції factorial
, є IntStr
, і перший multi-варіант не може перехопити виклик. На відміну від цього, коли factorial(2 - 1)
викликається рекурсивно, аргумент функції є цілим числом, що дозволяє викликати перший варіант.
Навігація по курсу
← Створення та виклик функцій / Значення за замовчуванням | Вбудовані функції для друку →
Ця сторінка автоматично перекладена за допомогою ChatGPT 4o. Оригінальний текст англійською мовою.
Переклади цієї сторінки: English • Deutsch • Español • Italiano • Latviešu • Nederlands • Български • Русский • Українська