Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практикум ОА и П.doc
Скачиваний:
23
Добавлен:
29.08.2019
Размер:
13.34 Mб
Скачать

Лабораторная работа №12. Тема: «Разработка рекурсивных алгоритмов и программ».

Цель работы: закрепить полученные навыки использования рекурсивных вызовов подпрограмм.

Краткие теоретические сведения

Объект называется рекурсивным, если он содержит сам себя или определен с помощью самого себя.

Рекурсивным может быть и определение функции. Так, например, факториал: Одним из способов определения такой функции является рекурсивный способ:

Пример 1. Подсчитать факториал

FUNCTION FACT (N: INTEGER): INTEGER;

BEGIN

IF N=0

THEN FACT:=1

ELSE FACT:=N*FACT (N-1)

END;

Пример 2. Вывести в обратном порядке цифры целого положительного числа N.

PROCEDURE REVERSE (N: INTEGER);

BEGIN

WRITE (N MOD 10);

IF (N DIV 10)>0

THEN REVERSE (N DIV 10)

END;

Задание.

Необходимо составить программу с использованием рекурсии в соответствии со своим вариантом.

Замечание: под инвертированием понимают перестановку первого и последнего элементов данной части массива, второго и предпоследнего и т.д.

Вариант

Задание

1

Поменять местами первый элемент массива с самым левым минимальным элементом, а затем поделить все элементы массива на минимальное значение.

2

Поменять местами последний элемент массива с самым правым максимальным элементом, а затем умножить все элементы массива на заданное число.

3

Инвертировать часть массива с первого элемента до самого правого минимального элемента.

4

Инвертировать часть массива с левого максимального элемента до последнего.

5

Поменять местами самый правый минимальный элемент со вторым элементом массива, а затем поделить элементы первой половины массива на найденное минимальное число.

6

Поменять местами самый левый максимальный элемент с элементом, номер которого задан, а затем помножить все элементы массива на найденное максимальное значение.

7

Инвертировать часть массива с первого элемента до элемента с заданным номером, после чего определить номер и значение самого последнего минимального элемента.

8

Инвертировать часть массива с элемента, номер которого задан, до последнего элемента, после чего определить номер значение самого последнего максимального элемента.

9

Поменять местами самый левый минимальный элемент со вторым элементом массива, а затем поделить на найденное минимальное значение все элементы второй половины массива.

10

Поменять местами самый правый максимальный элемент с предпоследним элементом массива, а затем умножить на найденное максимальное значение элементы, стоящие с первого по найденный номер максимального.

11

Инвертировать часть массива с последнего минимального до последнего элемента массива.

12

Инвертировать часть массива с элемента, номер которого задан, до последнего максимального элемента массива.

13

Поменять местами последний элемент массива с первым минимальным элементом, а затем поделить на заданное число все элементы, начиная с номера, где был найденный минимальный элемент, до последнего элемента массива.

14

Поменять местами первый максимальный элемент с элементом, номер которого задан, после чего умножить все элементы массива на найденное максимальное значение.

15

Из каждого элемента, начиная с заданного номера и до последнего, вычесть значение максимального элемента, затем поменять местами первый элемент массива с элементом под заданным номером.

16

Определить номер и значение самого последнего минимального элемента массива. Инвертировать первую половину массива.

17

Поменять местами элемент с заданным номером и самый левый минимальный элемент, после чего все элементы, имеющие номера с первого по заданный, поделить на найденное минимальное значение.

18

К каждому элементу с первого по самый левый максимальный добавить заданное число, после чего поменять местами второй элемент с найденным максимальным.

19

Поменять местами предпоследний элемент массива с элементом, номер которого задан. Определить в полученном массиве номер и значение последнего минимального элемента и умножить на него все элементы массива.

20

Поменять местами третий элемент с последним максимальным, а затем вычесть найденное максимальное значение из всех элементов первой половины массива.

21

Все элементы массива поделить на заданное число, а затем в полученном массиве поменять местами самый левый минимальный элемент с последним элементом.

22

Определить номер и значение первого максимального элемента, помножить все элементы, после найденного на это максимальное значение, в заключение поменять местами первый и последний элементы массива.

23

Инвертировать часть массива, расположенную между элементами с заданными номерами, затем определить номер и значение последнего минимального элемента.

24

Определить самый правый максимальный элемент во второй половине массива, вычесть полученное максимальное значение из всех элементом первой половины массива, после чего поменять местами первый элемент массива с найденным максимальным элементом.

25

Определить самый левый минимальный элемент среди части массива с первого элемента по элемент с заданным номером, поменять местами найденный элемент с последним элементом массива, затем поделить все элементы массива на найденное минимальное.

26

Определить самый левый максимальный элемент среди элементов, стоящих после элемента с заданным номером, умножить все элементы массива на найденное максимальное значение, а затем поменять первый элемент и предпоследний.

27

Определить номер и значение самого правого минимального и инвертировать вторую половину массива.

28

Поменять местами самый последний максимальный элемент в первой половине массива с самым первым минимальным элементом во второй половине массива.

29

Все элементы, стоящие, начиная с заданного номера до первого минимального элемента, увеличить на значение последнего элемента массива, затем поменять местами второй и предпоследний элементы массива.

30

Инвертировать часть массива, расположенную между самым левым минимальным в первой половине массива и самым правым максимальным во второй половине массива.