Рекурсия
Пример 1.
Допустим, нужно вычислить k!
(факториал
числа k).
Рекурсивное
определение факториала
k!
= (k-1)!
*k
(k-1)!
= (k-2)!
*(k-1)
…
/* Рекурсивное
определение функции fakt(k)
= k!
*/
int fakt (int k)
{
if (k > 0) return
fakt(k-1) * k;
else
return
1;
}
Пример вызова
этой функции:
/* Вычисление
c
= n!
/ (m!
* (n-m)!)
*/
void
main
(void)
{ int
n,
m,
c;
/* исходные данные и результат */
printf("\nВведите
два неотрицательных целых числа n
m
(n>=m)");
scanf("%d
%d", &n, &m);
c = fakt(n) / (fakt (m) *
fakt (n-m));
printf ("\n c = %d",
c);
}
Пример 2.
Составить подпрограмму вывода целого
числа со знаком.
Программа 13.3
(рекурсивная)
/* Вывод целого
числа x */ -945
void
vyvod_chisla (int x)
{
if (x < 0)
{ x = -x; putchar
('-'); }
if
(x
> 9)
vyvod_chisla
(x
/ 10); /* Точка
возврата */
putchar
(x
% 10 + '0');
}
Бикмурзина А.Р.,
Захарова З.Х., Хохлов Д.Г. 36