Натуральное число.
1) 1 - натуральное число.
2) Число, следующее за натуральным – натуральное.
Понятие факториала n!=1·2·3·…·(n-1) ·nтакже можно задать рекурсивно:
Факториал.
1) 0! = 1(так условно принято).
2) n! = n*(n-1)!
Рекурсивные процедуры и функции
Причем же здесь программирование? Оказывается, процедуры и функции в современных
языках программирования также могут вызывать сами себя.
Рекурсивныминазываются процедуры и функции, которые вызывают сами себя.
Например, функцию вычисления факториала можно записать так:
Int Factorial ( int n )
{
if ( n <= 0 ) return 1; // вернуть 1
else return n*Factorial(n-1); // рекурсивныйвызов
}
Обратите внимание, что функция Factorial вызывает сама себя, если n > 0. Для решения
этой задачи можно использовать и рекурсивную процедуру (а не функцию). Вспомним, как рекурсивная процедура может вернуть значение-результат? Через параметр, переданный по ссылке (в объявлении процедуры у его имени стоит знак ссылки &). При рекурсивных вызовах процедура меняет это значение.
void Factorial ( int n, int &fact )
{
if ( n == 0 ) fact = 1; // рекурсия закончилась
else {
Factorial(n-1, fact); // рекурсивный вызов, считаем (n-1)!
fact *= n; // n! = n*(n-1)!
}
}
В отличие от функции, процедура может (если надо) возвращать несколько значений-
результатов с помощью параметров, передаваемых по ссылке.
Дата добавления: 2015-10-05; просмотров: 707;