C# без циклів: обчислення факторіала за допомогою рекурсії

У програмуванні цикли зазвичай використовуються для повторення операцій. Але існує й альтернатива — рекурсія. Це коли функція викликає саму себе, щоб виконати операцію кілька разів. Рекурсія може значно спростити код, і в цій статті ми розглянемо, як обчислити факторіал за допомогою рекурсії.

Факторіал — це математична операція, при якій число множиться на всі числа, що йому менші. Наприклад, 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) програма виконуватиме кроки:

  1. 3 * Faktoriyel(2)3 * (2 * Faktoriyel(1))
  2. 2 * Faktoriyel(1)2 * 1 (Основний випадок)
  3. Результат: 3 * 2 * 1 = 6

А для виклику Faktoriyel(5):

  1. 5 * Faktoriyel(4)
  2. 4 * Faktoriyel(3)
  3. 3 * Faktoriyel(2)
  4. 2 * Faktoriyel(1) (Основний випадок)
  5. Результат: 5 * 4 * 3 * 2 * 1 = 120

Рекурсія дозволяє уникнути явних циклів і зробити код більш зручним. Вона допомагає розділити задачу на менші частини, що робить рішення компактнішим і яснішим.

Тим не менше, якщо ми хочемо вирішити задачу без циклів, рекурсія може стати чудовим вибором для таких обчислень, як факторіал. Вона також дозволяє створювати код, який легше зрозуміти і який набагато коротший за циклічні рішення.

Перекладено з: C#’ta Döngüsüz Döngü: Rekürsiyon ile Faktoriyel Hesaplama