Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабы_по_проге_Берлин / Лабораторная работа 6

.docx
Скачиваний:
15
Добавлен:
11.02.2015
Размер:
21.26 Кб
Скачать

Лабораторная работа №6. Функции. Рекурсия

Общие указания. Текст программ должен начинаться комментарием, содержащим: фамилию, имя, группу и условие задачи. Обе задачи решите в одной программе.

Теория 1.

Прочитайте страницы 72-78 учебного пособия по ОаиП.

Задание 1. Функции.

  1. Напишите функцию int min (int a, int b, int c, int d), находящее наименьшее из четырех данных чисел.

  2. Напишите функцию double power (double a, int n), вычисляющую значение an.

  3. Напишите функцию bool Xor (bool x, bool y), реализующую функцию "Исключающее ИЛИ" двух логических переменных x и y. Функция Xor должна возвращать true, если ровно один из ее аргументов x или y, но не оба одновременно равны true.

  4. Описать функцию вычисления факториала.

  5. Описать функцию, вычисляющую значение "двойного факториала": N!! = 1·3·5·...·N, если N — нечетное, N!! = 2·4·6·...·N, если N — четное (N > 0 — параметр целого типа).

  6. Описать функцию, вычисляющую сумму цифр целого числа.

  7. Описать функцию вещественного типа, вычисляющую длину отрезка AB на плоскости по координатам его концов:

  1. Напишите функцию логического типа, которая проверяет, является ли число простым.

  2. Вычислить:

Теория 2.

Прочитайте страницы 86-90 учебного пособия по ОаиП.

Задание 2. Рекурсия.

  1. Напишите рекурсивную функцию возведения в степень, пользующуюся следующим свойством: an=a*an-1.

  2. Напишите функцию возведения в степень, которая работала бы для отрицательных значений n: a-n=1/an.

  3. Напишите функцию быстрого возведения в степень, которая пользовалась бы следующими свойствами: an=(an/2)2 при четном n, an=a*an-1 при нечетном n.

  4. Для биномиальных коэффициентов (числа сочетаний из n по k) хорошо известна рекуррентная формула: . Вычислите значение , пользуясь этой формулой и учитывая, что .

  5. Описать рекурсивную функцию SqrtK(x,k,n) вещественного типа, находящую приближенное значение корня k-й степени из числа x по формуле: y(0) = 1,    y(n+1) = y(n) – (y(n) – x / y(n)k–1) / k, где y(n) обозначает SqrtK(x,k,n) (x — вещественный параметр, k и n — целые; x > 0, k > 1, n > 0).

  6. Описать рекурсивную функцию ElArifm(a,d,n) целого типа, находящую значение n-го члена арифметической прогрессии по формуле , d – разность прогрессии.

  7. Описать рекурсивную функцию NOD(A,B) целого типа, находящую наибольший общий делитель двух натуральных чисел A и B, используя алгоритм Евклида: NOD(A,B) = NOD(B % A,A),   если A <> 0;    NOD(0,B) = B. С помощью этой функции найти наибольшие общие делители пар A и B, A и C, A и D, если даны числа A, B, C, D.

  8. Описать рекурсивную функцию ElGeom(a,q,n) целого типа, находящую значение n-го члена геометрической прогрессии по формуле , q – знаменатель прогрессии.

  9. Вычислить значение полинома степени n по формуле: