Курс по Raku / Основи / Основи на функциите / Създаване и извикване на функции / Exercises / Рекурсивен факториел

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

Факториелът е много продуктивно упражнение, тъй като може да бъде решено по много различни начини. Този път използваме рекурсия, което означава, че функцията се извиква сама от себе си.

Код 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

Навигация в курса

Рекурсивен факториел   |   Функция за интервал