В C# допускается, чтобы метод вызывал самого себя. Этот процесс называетсярекурсией,а метод, вызывающий самого себя, —рекурсивным.Вообще, рекурсия представляет собой процесс, в ходе которого нечто определяет самое себя. В этом отношении она чем-то напоминает циклическое определение. Рекурсивный метод отличается главным образом тем, что он содержит оператор, в котором этот метод вызывает самого себя. Рекурсия является эффективным механизмом управления программой.

Классическим примером рекурсии служит вычисление факториала числа. Факториал числаNпредставляет собой произведение всех целых чисел от 1 доN.Например, факториал числа 3 равен 1х2><3, или 6. В приведенном ниже примере программы демонстрируется рекурсивный способ вычисления факториала числа. Для сравнения в эту программу включен также нерекурсивный вариант вычисления факториала числа.

// Простой пример рекурсии.

using System;

class Factorial {

// Это рекурсивный метод, public int FactR(int n) { int result;

if(n==l) return 1; result = FactR(n-l) * n; return result;

}

// Это итерационный метод, public int FactI(int n) { int t, result;

result = 1;

for(t=l; t <= n; t++) result *= t; return result;

class Recursion {

static void Main() { Factorial f = new

Factorial ();

Console.WriteLine("Факториалы, рассчитанные рекурсивным методом. Console.WriteLine("Факториал числа    3    равен    "    +    f.FactR(3));

Факториал числа    4    равен    "    +    f.FactR(4));

Console.WriteLine( Console.WriteLine(

Факториал числа    5    равен    "    +    f.FactR(5));

Console.WriteLine() ;

Console.WriteLine("Факториалы, рассчитанные итерационным методом Console.WriteLine("Факториал    числа    3    равен    "    +    f.FactR(3));

• Console.WriteLine("Факториал    числа    4    равен    "    +    f.FactR(4));

Console.WriteLine("Факториал    числа    5    равен    "    +    f.FactR(5));

При выполнении этой программы получается следующий результат.

Факториалы, рассчитанные рекурсивным методом.

Факториал числа 3 равен 6 Факториал числа 4 равен 24 Факториал числа 5 равен 120

Факториалы, рассчитанные итерационным методом.

Принцип действия нерекурсивного методаFactI() вполне очевиден. В нем используется цикл, в котором числа, начиная с 1, последовательно умножаются друг на друга, постепенно образуя произведение, дающее факториал.

Перейти на страницу:

Похожие книги