Курс Раку / Основи / Створення та виклик функцій / Вправи / Рекурсивний факторіал

Рішення: Рекурсивний факторіал

Факторіал є дуже продуктивною вправою, оскільки його можна вирішити багатьма різними способами. Цього разу ми використовуємо рекурсію, що означає, що функція викликається сама з себе.

Код 1

Ось код рішення. Зверніть увагу, що потрібно перевірити умову для зупинки рекурсії, інакше вона буде продовжуватися нескінченно.

sub factorial($n) {
    if $n < 2 {
        return 1;
    }
    else {
        return $n * factorial($n - 1);
    }
}

say factorial(10);

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

Код 2

У випадках, як показано в цьому коді, часто краще використовувати постфіксні форми if, щоб негайно повернутися з функції. Такий підхід очищає код і зменшує кількість відступів та пунктуації.

sub factorial($n) {
    return 1 if $n < 2;
    return $n * factorial($n - 1);
}

say factorial(10);

🦋 Знайдіть оновлену програму у файлі recursive-factorial-2.raku.

Приклад

Запустіть програму та перевірте результат. До речі, чи знали ви, що 10! — це точна кількість секунд у шести тижнях?

$ raku exercises/functions/recursive-factorial.raku
3628800

Наступна вправа

💪 Інтервальна функція

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

Асоціативні типи даних / Інтерполяція хешів   |   Більше про функції

Ця сторінка автоматично перекладена за допомогою ChatGPT 4o. Оригінальний текст англійською мовою.

Переклади цієї сторінки: EnglishDeutschEspañolItalianoLatviešuNederlandsБългарскиРусскийУкраїнська