Пример. Рекурсия на СИ. Факториал. Рекурсивными называются процедуры и функции, которые вызывают сами себя. Функцию вычисления факториала можно записать так:
Обратите внимание, что функция Factorial вызывает сама себя, если n>0. Для решения этой задачи можно использовать и рекурсивную процедуру (а не функцию). Вспомним, как рекурсивная процедура может вернуть значение-результат? Через параметр, переданный по ссылке (в объявлении процедуры у его имени стоит знак ссылки &). При рекурсивных вызовах процедура меняет это значение.
int Factorial ( int n )
{
if ( n <= 0 ) return 1;
else return n*Factorial(n-1);
}
void Factorial ( int n, int &fact )
{
if ( n == 0 ) fact = 1;
else {
Factorial ( n-1, fact );
fact *= n;
}
}