Курс языка программирования Raku / Основы / Создание и вызов функций / Упражнения / Рекурсивный факториал

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

Факториал — это очень продуктивное упражнение, так как его можно решить множеством различных способов. На этот раз мы используем рекурсию, что означает, что функция вызывает саму себя.

Код 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БългарскиРусскийУкраїнська