Курс по 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 4.0. Оригинален текст на английски

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