Курс по 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. Оригинален текст на английски
Преводи на тази страница: English • Deutsch • Español • Italiano • Latviešu • Nederlands • Български • Русский • Українська