Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПСД программы (полн).doc
Скачиваний:
1
Добавлен:
17.04.2019
Размер:
289.79 Кб
Скачать

Рекурсия

Пример 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