У програмуванні цикли зазвичай використовуються для повторення операцій. Але існує й альтернатива — рекурсія. Це коли функція викликає саму себе, щоб виконати операцію кілька разів. Рекурсія може значно спростити код, і в цій статті ми розглянемо, як обчислити факторіал за допомогою рекурсії.
Факторіал — це математична операція, при якій число множиться на всі числа, що йому менші. Наприклад, 3! = 3 × 2 × 1 = 6 або 5! = 5 × 4 × 3 × 2 × 1 = 120. Зазвичай для цього використовують цикл, але можна обчислити факторіал і без нього, за допомогою рекурсії.
Рекурсія — це коли функція викликає саму себе для розв'язання задачі крок за кроком. Це дозволяє поділити задачу на менші підзадачі, що інколи робить код простішим і коротшим.
Щоб обчислити факторіал у C#, ми можемо використовувати наступний рекурсивний метод:
public static int Faktoriyel(int sayi)
{
if (sayi == 0 || sayi == 1) // 0! і 1! дорівнюють 1
{
return 1; // Основний випадок
}
else
{
return sayi * Faktoriyel(sayi - 1); // Рекурсивний виклик
}
}
У цьому прикладі перевірка на основний випадок визначає, що 0! і 1! завжди дорівнюють 1. Якщо значення більше, функція викликає саму себе, зменшуючи число на одиницю, поки не досягне основного випадку. Коли досягається основний випадок, обчислення завершується, і результат повертається.
Далі, ми можемо викликати цю функцію в основній програмі:
static void Main(string[] args)
{
Console.WriteLine(Faktoriyel(3)); // Виводить: 6
Console.WriteLine(Faktoriyel(5)); // Виводить: 120
Console.ReadKey();
}
При виклику Faktoriyel(3)
програма виконуватиме кроки:
3 * Faktoriyel(2)
→3 * (2 * Faktoriyel(1))
2 * Faktoriyel(1)
→2 * 1
(Основний випадок)- Результат:
3 * 2 * 1 = 6
А для виклику Faktoriyel(5)
:
5 * Faktoriyel(4)
4 * Faktoriyel(3)
3 * Faktoriyel(2)
2 * Faktoriyel(1)
(Основний випадок)- Результат:
5 * 4 * 3 * 2 * 1 = 120
Рекурсія дозволяє уникнути явних циклів і зробити код більш зручним. Вона допомагає розділити задачу на менші частини, що робить рішення компактнішим і яснішим.
Тим не менше, якщо ми хочемо вирішити задачу без циклів, рекурсія може стати чудовим вибором для таких обчислень, як факторіал. Вона також дозволяє створювати код, який легше зрозуміти і який набагато коротший за циклічні рішення.
Перекладено з: C#’ta Döngüsüz Döngü: Rekürsiyon ile Faktoriyel Hesaplama