
- •Зміст дисципліни.
- •Найменування тем, їхній зміст, обсяг у годинах лекційних занять
- •Вказівки з використанНя літературних джерел
- •Алгоритми й структури даних
- •Стеки, списки
- •Дерева пошуку Бінарні дерева
- •Двійкові дерева
- •Червоно- чорні дерева
- •Частково впорядковані дерева Статья I.При створенні чуд елементи вводилися в наступному порядку: (13, 6, 15, 5, 10, 6, 3, 13, 5, 6, 35, 8). Пояснити побудова (переформування) дерева.
- •Рекурсія
- •Перебір з поверненням
- •Машина Тьюрінга
- •Приклади Послідовний пошук
- •Структури даних. Масиви Решето Ератосфена
- •Обчислення найближчої точки
- •Структури даних. Списки Приклад циклічного списку (задача Йосипа)
- •Сортування методом вставки в список
- •Звертання порядку проходження елементів списку
- •Структури даних. Рядки Сортування масиву рядків
- •Абстрактні типи даних (атд) Інтерфейс абстрактного типу даних стека
- •Реалізація черги fifo на базі масиву
- •Реалізація черги fifo на базі зв'язного списку
- •Перетворення з інфіксної форми в постфіксну
- •Рекурсія Алгоритм Евклида
- •Рекурсивна програма для оцінки префіксних виразів
- •Розв’язання
- •Приклад 2 Завдання
- •Розв’язання
- •Приклад 3 Завдання
- •Розв’язання
- •Приклад 4 Завдання
- •Розв’язання
- •Приклад 5 Завдання
- •Розв’язання
- •Приклад 6 Завдання
- •Розв’язання
- •Приклад 7 Завдання
- •Розв’язання
- •Алгоритм роботи машини т’юринга
- •Дослідження функції на рекурсивність
- •Нормальні алгоритми Маркова
- •Алгоритм роботи програми.
- •Приклад роботи програми.
- •Варіанти курсових робіт
- •Варіанти виконання Алгоритм виконання курсової роботи:
- •Приклад1.
- •Побудова моделі.
- •Розроблення алгоритму.
- •Правильність алгоритму.
- •Реалізація алгоритму.
- •Перевірка програми.
- •Приклад2
- •Постановка задачі
- •Перший варіант розв’язку
- •Другий варіант розв’язку.
- •Приклад3
- •Опукла оболонка
- •Метод обходу Грехема
- •Метод обходу Джарвіса
- •Алгоритм апроксимації опуклої оболонки
- •Швидкі методи побудови опуклої оболонки
- •Алгоритм типу розділяй та пануй
- •Побудова опуклої оболонки простого многокутника
- •Динамічні алгоритми побудови опуклої оболонки
- •Порівняльний аналіз алгоритмів побудови опуклої оболонки
- •Висновки
Рекурсія
п Описати рекурсивну функцію Fact(N) речовинного типу, що обчислює значення факторіала
N! = 1·2·…·N
(N > 0 — параметр цілого типу). За допомогою цієї функції обчислити факторіали п'яти даних чисел.
п Описати рекурсивну функцію Fact2(N) речовинні типи, що обчислює значення подвійного факторіала
N!! = N·(N–2)·(N–4)·…
(N > 0 — параметр цілого типу; останній співмножник у добутку дорівнює 2, якщо N — парне число, і 1, якщо N — непарне). За допомогою цієї функції обчислити подвійні факторіали п'яти даних чисел.
п Описати рекурсивну функцію Power(X, N) речовинного типу, що знаходить значення N-й ступеня числа X по формулах:
X 0 = 1, X N = (X N/2) 2 при парних N > 0, X N = X·X N–1 при непарних N > 0, X N = 1/X –N при N < 0
(X 0 — речовинне число, N — ціле; у формулі для парних N повинна використатися операція цілочисельного ділення). За допомогою цієї функції знайти значення X N для даного X при п'ятьох даних значеннях N.
п Описати рекурсивну функцію Fib1(N) цілого типу, що обчислює N-й елемент послідовності чисел Фібоначі (N — ціле число):
F1 = F2 = 1, FK = FK–2 + FK–1, K = 3, 4, … ...
За допомогою цієї функції знайти п'ять чисел Фібоначі з даними номерами, і вивести ці числа разом з кількістю рекурсивних викликів функції Fib1, які знадобилися для їхнього знаходження.
п Описати рекурсивну функцію Fib2(N) цілі типу, що обчислює N-й елемент послідовності чисел Фібоначі (N — ціле число):
F1 = F2 = 1, FK = FK–2 + FK–1, K = 3, 4, … ...
Уважати, що номер N не перевершує 20. Для зменшення кількості рекурсивних викликів у порівнянні з функцією Fib1 (див. завдання 4) створити допоміжний масив для зберігання вже обчислених чисел Фібоначі й звертатися до нього при виконанні функції Fib2. За допомогою функції Fib2 знайти п'ять чисел Фібоначі з даними номерами.
п Описати рекурсивну функцію Combin1(N, K) цілого типу, що знаходить C(N, K) — число сполучень із N елементів по K — за допомогою рекурентного співвідношення:
C(N, 0) = C(N, N) = 1, C(N, K) = C(N – 1, K) + C(N – 1, K – 1) при 0 < K < N.
Параметри функції — цілі числа; N > 0, 0 K N. Дано число N і п'ять різних значень K. Вивести числа C(N, K) разом з кількістю рекурсивних викликів функції Combin1, які знадобилися для їхнього знаходження.
п Описати рекурсивну функцію Combin2(N, K) цілі типу, що знаходить C(N, K) — число сполучень із N елементів по K — за допомогою рекурентного співвідношення:
C(N, 0) = C(N, N) = 1, C(N, K) = C(N – 1, K) + C(N – 1, K – 1) при 0 < K < N.
Параметри функції — цілі числа; N > 0, 0 K N. Уважати, що параметр N не перевершує 20. Для зменшення кількості рекурсивних викликів у порівнянні з функцією Combin1 (див. завдання Recur6) описати допоміжний двовимірний масив для зберігання вже обчислених чисел C(N, K) і звертатися до нього при виконанні функції Combin2. За допомогою функції Combin2 знайти числа C(N, K) для даного значення N і п'яти різних значень K.
п Описати рекурсивну функцію Root(X, K, N) речовинного типу, що знаходить наближене значення кореня K-й ступеня із числа X по формулі:
Y0 = 1, YN+1 = YN – (YN – X/(YN)K–1)/K,
де YN позначає Root(X, K, N) при фіксованих X й K. Параметри функції: X (> 0) — речовинне число, K (> 1) і N (> 0) — цілі. За допомогою функції Root знайти для даного числа X наближені значення його кореня K-й ступеня при шести даних значеннях N.
п Описати рекурсивну функцію NOD(A, B) цілого типу, що знаходить найбільший загальний дільник (НОД) двох цілих позитивних чисел A й B, використовуючи алгоритм Евкліда:
НОД(A, B) = НОД(B, A mod B), якщо B 0; НОД(A, 0) = A.
За допомогою цієї функції знайти НОД(A, B), НОД(A, C), НОД(A, D), якщо дані числа A, B, C, D.
п Описати рекурсивну функцію DigitSum(K) цілого типу, що знаходить суму цифр цілого числа K, не використовуючи оператор циклу. За допомогою цієї функції знайти суми цифр для п'яти даних цілих чисел.
п Описати рекурсивну функцію MaxElem(A, N) цілого типу, що знаходить максимальний елемент цілочисельного масиву A розміру N (1 N 10), не використовуючи оператор циклу. За допомогою цієї функції знайти максимальні елементи масивів A, B, C розміру NA, NB, NC відповідно.
п Описати рекурсивну функцію DigitCount(S) цілого типу, що знаходить кількість цифр у рядку S, не використовуючи оператор циклу. За допомогою цієї функції знайти кількість цифр у кожному з п'яти даних рядків.
п Описати рекурсивну функцію Palindrom(S) логічного типу, що повертає True, якщо рядок S є паліндромом (тобто читається однаково ліворуч праворуч і праворуч ліворуч), і False у противному випадку. Оператор циклу в тілі функції не використати. Вивести значення функції Palindrom для п'яти даних рядків.