Курс Raku / Основи / Основи функцій / Більше про функції / Вправи / Факторіал з мульти-функціями
Розв’язання: Факторіал з мульти-функціями
Ця вправа знову про факторіали. Дійсно, завдання дозволяє нам проілюструвати більше можливостей 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) викликається рекурсивно, аргумент
функції є цілим числом, що дозволяє викликати перший варіант.
Навігація курсом
← Факторіал з мульти-функціями | Вбудовані функції для друку →