Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные по информатике.pdf
Скачиваний:
63
Добавлен:
18.04.2015
Размер:
879.04 Кб
Скачать

Ульяновский государственный университет

Форма

«Информатика»

Лабораторная работа № 9

Рекурсия

Уровень A

Требуется определить массив целых чисел (например, размера 30), заполнить его случайными числами или ввести его элементы с клавиатуры и определить его характеристики с помощью рекурсивной функции в соответствии с вариантом. Проверку правильности результата провести с помощью сравнения результатов итеративной и рекурсивной функций.

Программа должна содержать следующие функции.

Инициализация элементов массива случайными числами или вводимыми с клавиатуры.

Вывод массива на экран.

Итеративная функция, вычисляющая характеристики массива в соответствии с вариантом.

Рекурсивная функция, вычисляющая характеристики массива в соответствии с вариантом.

Варианты заданий

A1. В массиве целых чисел с помощью рекурсивной функции найти количество четных элементов.

A2. В массиве целых чисел с помощью рекурсивной функции найти количество элементов массива, которые делятся на 5 и не делятся на 7.

A3. В массиве целых чисел с помощью рекурсивной функции найти количество простых чисел.

A4. В массиве целых чисел с помощью рекурсивной функции найти сумму нечетных элементов.

A5. Найти максимальный элемент целочисленного массива с помощью рекурсии.

A6. Вычислить сумму только симметричных элементов массива с помощью рекурсии.

A7. В массиве целых чисел с помощью рекурсивной функции найти сумму таких элементов, которые состоят только из четных цифр.

A8. В массиве целых чисел с помощью рекурсивной функции найти количество элементов, больших заданного числа A.

39

Ульяновский государственный университет

Форма

«Информатика»

A9. В массиве целых чисел с помощью рекурсии найти количество минимальных элементов.

A10. В массиве целых чисел с помощью рекурсии найти сумму элементов массива, расположенных в интервале (А,В).

A11. Найти количество двузначных элементов массива с помощью рекурсии.

A12. Найти минимальный элемент целочисленного массива с помощью рекурсии.

A13. В массиве целых чисел с помощью рекурсии найти количество максимальных элементов.

A14. Вычислить сумму только двузначных элементов массива с помощью рекурсии.

A15. В массиве целых чисел с помощью рекурсивной функции найти сумму элементов, заканчивающихся на 7.

A16. В массиве целых чисел с помощью рекурсивной функции найти сумму всех элементов массива, которые одновременно делятся на 3 и на 5.

A17. В массиве целых чисел с помощью рекурсивной функции найти количество элементов, начинающихся на 3.

Уровень B

Требуется определить массив целых чисел (например, размера 30), заполнить его случайными числами (в диапазоне от A до B, где A и B задаются в директивах #define) или ввести его элементы с клавиатуры и определить его характеристики с помощью рекурсивной функции в соответствии с вариантом. Проверку правильности результата провести с помощью сравнения результатов итеративной и рекурсивной функций.

Программа должна содержать следующие функции.

Инициализация элементов массива случайными числами или вводимыми с клавиатуры.

Вывод массива на экран.

Итеративная функция, вычисляющая характеристики массива в соответствии с вариантом.

Рекурсивная функция, вычисляющая характеристики массива в соответствии с вариантом.

Варианты заданий

40

Ульяновский государственный университет

Форма

«Информатика»

B1. Для заданного одномерного массива A из N элементов проверить, что существует, по крайней мере, один элемент Ai, для которого выполняется условие sin Ai > 0. Рекурсивную функцию применять отдельно для каждой из половин массива. Рекурсивные вызовы заканчивать, когда останется только один элемент.

Например, для N=8:

8

4

8

, ( – «или»)

(sin Ai > 0)

= (sin Ai > 0) (sin Ai > 0)

 

i=1

i=1

i=5

 

B2. Для заданного одномерного массива B из N элементов найти сумму выражений, вычисляемых по формуле sin Bi cos Bi . Рекурсивную функцию применять

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

Например, для N=8: 8 (sin Bi cos Bi )= 4 (sin Bi cos Bi )+ 8 (sin Bi cos Bi )

i=1

i=1

i=5

B3. Для заданного одномерного массива X из N элементов найти сумму выражений, вычисляемых по формуле X i2 . Рекурсивную функцию применять каждый

раз отдельно для первой трети массива и для остальной части (2/3) массива. Рекурсивные вызовы заканчивать, когда останется только один элемент.

Например, для N=9: 9 X i2 = 3 X i2 +9 X i2

i=1

i=1

i=4

B4. Для заданного одномерного массива D из N элементов найти количество элементов массива, для которых выполняется условие Di > i. Рекурсивную функцию применять каждый раз отдельно для первого элемента массива и для остальной его части. Рекурсивные вызовы заканчивать, когда останется только один элемент.

4

1

4

Например, для N=4: Count (Di > i)=Count (Di > i)+Count (Di > i)

i=1

i=1

i=3

B5. Для заданного одномерного массива X из N элементов найти количество элементов массива, для которых выполняется условиеsin X2i < 0 . Рекурсивную

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

8

Xi

 

4

Xi

 

8

Xi

 

Например, для N=8: Count(sin

< 0)

= Count(sin

< 0)

+Count(sin

< 0)

2

2

2

i=1

 

i=1

 

i=5

 

B6. Для заданного одномерного массива B из N элементов найти количество элементов массива, для которых выполняется условие(cos Bi2 > 0) (Bi < 0) . Рекур-

сивную функцию применять каждый раз отдельно для первой трети массива и

41

Ульяновский государственный университет

Форма

«Информатика»

для остальной части (2/3) массива. Рекурсивные вызовы заканчивать, когда останется только элемент. Например, для N=6:

6

 

2

 

 

6

Count ((cos Bi2

> 0) (Bi < 0))

=Count ((cos Bi2

> 0)

(Bi < 0))

+Count ((cos Bi2 > 0) (Bi < 0))

i=1

 

i=1

 

 

i=3

B7. Для заданного одномерного массива X из N элементов найти произведение множителей, вычисляемых по формуле 1X+ii . Рекурсивную функцию применять

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

6

X i

3

X i

6

X i

Например, для N=6:

=

×

 

 

 

i=1

1+i

i=1

1+i

i=4

1+i

B8. Для заданного одномерного массива X из N элементов найти произвед ение

множителей, вычисляемых по формуле X i 1X+i2i . Рекурсивную функцию применять каждый раз отдельно для первого элемента массива и для остальной его части. Рекурсивные вызовы заканчивать, когда останется только один элемент.

 

5

 

 

2

 

 

 

2

 

 

5

 

2

 

Например, для N=5:

 

X

i

Xi

 

= X

1

X1

 

×

X

i

Xi

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

i=1

 

 

1 +i

 

 

 

 

i=2

 

1 +i

B9. Для заданного одномерного массива X из N элементов найти произведение

множителей, вычисляемых по формуле X i4

3X i2 . Рекурсивную функцию приме-

нять каждый раз отдельно для первой трети массива и для остальной части (2/3) массива. Рекурсивные вызовы заканчивать, когда останется только один элемент.

Например, для N=6: 6

(X i4 3X i2 )= 2

(X i4 3X i2 )×6 (X i4 3X i2 )

i=1

i=1

i=3

B10. Для заданного одномерного массива A из N элементов найти количество элементов массива, для которых выполняется условие i2 > |Ai|. Рекурсивную функцию применять каждый раз отдельно для первой трети массива и для остальной части (2/3) массива. Рекурсивные вызовы заканчивать, когда останется только один элемент.

Например, для N=12: Count12

(i2 >

 

Ai

 

)=Count4

(i2 >

 

Ai

 

)+Count12 (i2 >

 

Ai

 

)

 

 

 

 

 

 

i=1

 

 

 

 

i=1

 

 

 

 

i=5

 

 

 

 

B11. Для заданного одномерного массива Z из N элементов найти сумму выражений, вычисляемых по формуле 2X i cos X i2 . Рекурсивную функцию применять

42

Ульяновский государственный университет

Форма

«Информатика»

каждый раз отдельно для первой трети массива и для остальной части (2/3) массива. Рекурсивные вызовы заканчивать, когда останется только один элемент.

12

4

12

Например, для N=12: 2X i cos X i2

= 2X i cos X i2

+2X i cos X i2

i=1

i=1

i=5

B12. Для заданного одномерного массива Q из N элементов проверить, что существует по крайней мере один элемент Qi, для которого выполняется условие |Qi| > i. Рекурсивную функцию применять каждый раз отдельно для первого элемента массива и для остальной его части. Рекурсивные вызовы заканчивать, когда останется только один элемент.

Например, для N=5:

5

 

Qi

 

> i) = (

 

Q1

5

 

Qi

 

> i) , ( – «или»)

(

 

 

 

 

>1) (

 

 

 

 

 

 

 

 

 

i=1

 

i=2

B13. Для заданного одномерного массива Y из N элементов проверить, что существует по крайней мере один элемент Yi, для которого выполняется условие

Yii2 > 2 . Рекурсивную функцию применять каждый раз отдельно для первой тре-

ти массива и для остальной части (2/3) массива. Рекурсивные вызовы заканчивать, когда останется только один элемент.

Например, для N=9:

9 2

> 2

 

3 2

> 2

 

9 2

> 2

 

, ( – «или»)

 

 

=

 

 

 

 

 

Yi

 

 

 

Yi

 

 

 

Yi

 

 

 

 

 

 

 

 

 

 

 

 

i=1 i

 

 

i=1 i

 

 

i=4 i

 

 

 

B14. Для заданного одномерного массива A из N элементов проверить, что существует по крайней мере один элемент Ai, для которого выполняется условие Ai ≤ i2. Рекурсивную функцию применять каждый раз отдельно для каждой из половин массива. Рекурсивные вызовы заканчивать, когда останется только один элемент.

Например, для N=4:

4

2

4

(Ai i2 ) = (Ai i2 ) (Ai i2 ) , ( – «или»)

 

i=1

i=1

i=3

Уровень C

Требуется определить массив целых чисел (например, размера 30), заполнить его случайными числами (в диапазоне от A до B, где A и B задаются в директивах #define) или ввести его элементы с клавиатуры и определить его характеристики с помощью рекурсивной функции в соответствии с вариантом. Проверку правильности результата провести с помощью сравнения результатов итеративной и рекурсивной функций. Упорядочить массив по возрастанию с помощью рекурсивной функции (алгоритм сортировки задается в варианте).

43

Ульяновский государственный университет

Форма

«Информатика»

Программа должна содержать следующие функции.

Инициализация элементов массива случайными числами или вводимыми с клавиатуры.

Вывод массива на экран.

Итеративная функция, вычисляющая характеристики массива в соответствии с вариантом.

Рекурсивная функция, вычисляющая характеристики массива в соответствии с вариантом.

Сортировка массива с помощью рекурсивной функции.

Варианты заданий

C1. Для заданного одномерного массива X из N элементов проверить, что для всех элементов массива выполняется условие –10< X i3 <20. Рекурсивную функ-

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

Например, для N=8:

8

4

8

, ( –

(10 < Xi3

< 20) = (10 < Xi3

< 20) (10 < Xi3 < 20)

 

i=1

i=1

i=5

 

 

 

«и»)

 

 

Рекурсивно упорядочить массив с помощью метода прямого выбора.

C2. Для заданного одномерного массива A из N элементов найти значение минимального элемента массива и его номер. Рекурсивную функцию применять каждый раз отдельно для каждой из половин массива. Рекурсивные вызовы заканчивать, когда останется только один элемент.

12

 

6

12

 

Например, для N=12: Min Ai = min Min Ai ; Min Ai

i=1

 

i=1

i=7

 

Рекурсивно упорядочить массив с помощью метода вставок.

C3. Для заданного одномерного массива X из N элементов проверить, что для всех элементов массива выполняется условие cos Xi > 0. Рекурсивную функцию применять каждый раз отдельно для первой трети массива и для остальной части (2/3) массива. Рекурсивные вызовы заканчивать, когда останется только один элемент.

Например, для N=6:

6

2

6

, ( – «и»)

(cos Xi > 0) = (cos Xi > 0) (cos Xi > 0)

 

i=1

i=1

i=3

 

Рекурсивно упорядочить массив с помощью пузырьковой сортировки.

C4. Для заданного одномерного массива A из N элементов найти значение максимального элемента массива. Рекурсивную функцию применять каждый раз

44

Ульяновский государственный университет

Форма

«Информатика»

отдельно для первой трети массива и для остальной части (2/3) массива. Рекурсивные вызовы заканчивать, когда останется только один элемент.

6

 

2

6

 

Например, для N=6: Max Ai = max Max Ai ; Max Ai

i=1

 

i=1

i=3

 

Рекурсивно упорядочить массив с помощью метода прямого выбора.

C5. Для заданного одномерного массива Y из N элементов проверить, что для всех элементов массива выполняется условие Yi < 0. Рекурсивную функцию применять каждый раз отдельно для каждой из половин массива. Рекурсивные вызовы заканчивать, когда останется только один элемент.

Например, для N=4:

4

2

4

, ( – «и»)

(Yi < 0)

= (Yi < 0) (Yi < 0)

 

i=1

i=1

i=3

 

Рекурсивно упорядочить массив с помощью метода вставок.

C6. Для заданного одномерного массива B из N элементов найти значение минимального элемента массива. Рекурсивную функцию применять каждый раз отдельно для каждой из половин массива. Рекурсивные вызовы заканчивать, когда останется только один элемент.

4

 

2

4

 

Например, для N=4: Min Ai = min Min Ai ; Min Ai

i=1

 

i=1

i=3

 

Рекурсивно упорядочить массив с помощью пузырьковой сортировки.

C7. Для заданного одномерного массива Y из N элементов проверить, что для всех элементов массива выполняется условие Yi sin Yi > 5. Рекурсивную функцию применять каждый раз отдельно для первого элемента массива и для остальной его части. Рекурсивные вызовы заканчивать, когда останется только один элемент.

Например, для N=5:

5

5

, ( – «и»)

(Yi sinYi > 5)

= (Yi sinYi > 5) (Yi sinYi > 5)

 

i=1

i=2

 

Рекурсивно упорядочить массив с помощью метода прямого выбора.

C8. Для заданного одномерного массива B из N элементов найти значение максимального элемента массива и его номер. Рекурсивную функцию применять каждый раз отдельно для первого элемента массива и для остальной его части. Рекурсивные вызовы заканчивать, когда останется только один элемент.

4

 

4

 

Например, для N=4: MaxBi = max Bi ; MaxBi

i=1

 

i=2

 

Рекурсивно упорядочить массив с помощью метода вставок.

45

Ульяновский государственный университет

Форма

«Информатика»

C9. Для заданного одномерного массива B из N элементов найти значение минимального значения выражения sin Bi. Рекурсивную функцию применять каждый раз отдельно для первой трети массива и для остальной части (2/3) массива. Рекурсивные вызовы заканчивать, когда останется только один элемент.

9

 

3

9

 

Например, для N=9: Min(sin Bi )= min Min(sin Bi ); Min(sin Bi )

i=1

 

i=1

i=4

 

Рекурсивно упорядочить массив с помощью пузырьковой сортировки.

C10. Для заданного одномерного массива Z из N элементов найти значение максимального значения выражения sin Zi2 i Z+i2 . Рекурсивную функцию применять

каждый раз отдельно для первой трети массива и для остальной части (2/3) массива. Рекурсивные вызовы заканчивать, когда останется только один элемент.

Например, для N=9:

9

 

 

Z

 

3

 

 

Z

9

 

 

Z

Max sin Zi

i

 

= max Max sin Zi

i

; Max sin Zi

i

 

 

 

2

 

 

 

 

 

2

 

 

 

 

2

 

 

i=1

 

 

 

i + 2

 

 

i=1

 

 

 

i + 2

 

i=4

 

 

 

i + 2

 

Рекурсивно упорядочить массив с помощью метода вставок.

46