Рекурсивной называют функцию, которая прямо или косвенно вызывает сама себя. Классический пример – это функция, вычисляющая факториал n! = 1*2*…*n, 0!=1.
long Factorial(int n)
{
if (n < 0 ) return 0; // не определен – возврат нуля
if (n == 0 ) return 1;
return(n* Factorial(n - 1));
}
Следует обратить внимание, что последовательность рекурсивных обращений к функции Factorial прерывается при вызове Factorial(0).
В этой функции используется прямая рекурсия – в ее теле содержится вызов этой же функции. Может быть и косвенная рекурсия – когда вызывается другая функция, содержащая вызов первой.
A() { … B(); …}
B() { … A(); …}