Работа 3.7. Рекурсивные методы программирования (к § §2.3.1 – 2.3.3) Уровень 1 Вычислить сумму первых M элементов числовой последовательности, заданной рекуррентной формулой. Использовать рекурсивно-определенную функцию 1. a n arctg a n 1 1, a1 = 0. 2. an 2 1 an1 , a1 = 2. 1 2 3. an tg an1 , a1 = 0,5. 1 2 4. an cos an1 , a1 = 0,5. 2 an21 , a1 = 2. 5. an 2 an 1 6. an an1 an2 , a1 = 1, a2 = 2. 2 7. an e a , a1 = 0. n 1 8. an x , a1 = x. 2an21 Уровень 2 Дана общая формула для элементов числовой последовательности. Вычислить сумму первых М элементов. Для этого: описать частично-рекурсивную функцию, использовать рекурсивно-определенную подпрограмму. (1) n n 9. an n , 2 2n 10. an ; (n 1)! 11. an 2n 1 ; 2n 12. an 10 n ; n! 13. an (1) n 2 n , n! 14. an n! ; (2n)! Уровень 3 Решить задачу, используя рекурсивную подпрограмму: 15. Даны натуральное число n и вещественное положительное число k. Вычислить: k 2k k (n 1) kn . 16. Дано число x и числовой массив { a0, a1, a2, …, an}. Вычислить по схеме Горнера значение алгебраического многочлена: y an x n an1 x n1 an2 x n2 a1 x a0 . 17. Описать функцию C(m, n), где 0 m n, для вычисления биномиального коэффициента C nm по следующей формуле: C n0 C nn 1; C nm C nm1 C nm11 при 0 m n. Получить значение C107 . 18. Найти сумму цифр заданного натурального числа. 19. Подсчитать количество цифр в заданном натуральном числе. 20. Описать рекурсивную функцию Root(a, b, ), которая методом деления отрезка пополам находит с точностью корень уравнения f(x) = 0 на отрезке [a, b] (считать, что > 0, a < b, f(a) f(b) < 0 и f(x) — непрерывная и монотонная на отрезке [a, b]). Используя функцию, найти корень уравнения sin 2x – ln x=0 на отрезке [1, 2 ] с точностью 10-5. 21. Описать функцию min(X) для определения минимального элемента линейного массива X, введя вспомогательную рекурсивную функцию min1(k), находящую минимум среди последних элементов массива X, начиная с k-го. С помощью функции найти минимальный элемент массива, вводимого с клавиатуры. 22. Описать рекурсивную логическую функцию Simm(S, I, J), проверяющую, является ли симметричной часть строки S, начинающаяся i-м и заканчивающаяся j-м ее элементами. Протестировать функцию. 23. Составить программу нахождения числа, которое образуется из данного натурального числа при записи его цифр в обратном порядке. Например, для числа 1234 получаем ответ 4321. 24. Составить программу перевода данного натурального числа в pичную систему счисления (2 p 9). 25. Дана символьная строка, представляющая собой запись натурального числа в p-ичной системе счисления (2 p 9). Составить программу перевода этого числа в десятичную систему счисления. 26. Описать рекурсивную логическую функцию, которая возвращает TRUE, если её аргумент — простое число. Протестировать функцию. 27. Описать функцию, которая удаляет из строки все лишние пробелы. Пробелы считаются лишними, если их подряд идёт более двух, если они стоят в конце строки после последней точки, если стоят после открывающегося парного знака препинания. Протестировать функцию. 28. Разработать функцию для вычисления определителя матрицы порядка n (1 n 20). Протестировать функцию. 29. Дано n различных натуральных чисел. Напечатать все перестановки этих чисел.