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

Рекурсія

  1. п Описати рекурсивну функцію Fact(N) речовинного типу, що обчислює значення факторіала

N! = 1·2·…·N

(N > 0 — параметр цілого типу). За допомогою цієї функції обчислити факторіали п'яти даних чисел.

  1. п Описати рекурсивну функцію Fact2(N) речовинні типи, що обчислює значення подвійного факторіала

N!! = N·(N–2)·(N–4)·…

(N > 0 — параметр цілого типу; останній співмножник у добутку дорівнює 2, якщо N — парне число, і 1, якщо N — непарне). За допомогою цієї функції обчислити подвійні факторіали п'яти даних чисел.

  1. п Описати рекурсивну функцію Power(XN) речовинного типу, що знаходить значення 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.

  1. п Описати рекурсивну функцію Fib1(N) цілого типу, що обчислює N-й елемент послідовності чисел Фібоначі (N — ціле число):

F1 = F2 = 1,        FK = FK–2 + FK–1,    K = 3, 4, … ...

За допомогою цієї функції знайти п'ять чисел Фібоначі з даними номерами, і вивести ці числа разом з кількістю рекурсивних викликів функції Fib1, які знадобилися для їхнього знаходження.

  1. п Описати рекурсивну функцію Fib2(N) цілі типу, що обчислює N-й елемент послідовності чисел Фібоначі (N — ціле число):

F1 = F2 = 1,        FK = FK–2 + FK–1,    K = 3, 4, … ...

Уважати, що номер N не перевершує 20. Для зменшення кількості рекурсивних викликів у порівнянні з функцією Fib1 (див. завдання 4) створити допоміжний масив для зберігання вже обчислених чисел Фібоначі й звертатися до нього при виконанні функції Fib2. За допомогою функції Fib2 знайти п'ять чисел Фібоначі з даними номерами.

  1. п Описати рекурсивну функцію Combin1(NK) цілого типу, що знаходить C(NK) — число сполучень із N елементів по K — за допомогою рекурентного співвідношення:

C(N, 0) = C(NN) = 1, C(NK) = C(N – 1, K) + C(N – 1, K – 1)    при 0 < K < N.

Параметри функції — цілі числа; N > 0, 0  K  N. Дано число N і п'ять різних значень K. Вивести числа C(NK) разом з кількістю рекурсивних викликів функції Combin1, які знадобилися для їхнього знаходження.

  1. п Описати рекурсивну функцію Combin2(NK) цілі типу, що знаходить C(NK) — число сполучень із N елементів по K — за допомогою рекурентного співвідношення:

C(N, 0) = C(NN) = 1, C(NK) = C(N – 1, K) + C(N – 1, K – 1)    при 0 < K < N.

Параметри функції — цілі числа; N > 0, 0  K  N. Уважати, що параметр N не перевершує 20. Для зменшення кількості рекурсивних викликів у порівнянні з функцією Combin1 (див. завдання Recur6) описати допоміжний двовимірний масив для зберігання вже обчислених чисел C(NK) і звертатися до нього при виконанні функції Combin2. За допомогою функції Combin2 знайти числа C(NK) для даного значення N і п'яти різних значень K.

  1. п Описати рекурсивну функцію Root(XKN) речовинного типу, що знаходить наближене значення кореня K-й ступеня із числа X по формулі:

Y0 = 1,        YN+1 = YN – (YN – X/(YN)K–1)/K,

де YN позначає Root(XKN) при фіксованих X й K. Параметри функції: X (> 0) — речовинне число, K (> 1) і N (> 0) — цілі. За допомогою функції Root знайти для даного числа X наближені значення його кореня K-й ступеня при шести даних значеннях N.

  1. п Описати рекурсивну функцію NOD(AB) цілого типу, що знаходить найбільший загальний дільник (НОД) двох цілих позитивних чисел A й B, використовуючи алгоритм Евкліда:

НОД(AB) = НОД(B, A mod B),    якщо B  0;        НОД(A, 0) = A.

За допомогою цієї функції знайти НОД(AB), НОД(AC), НОД(AD), якщо дані числа A, B, CD.

  1. п Описати рекурсивну функцію DigitSum(K) цілого типу, що знаходить суму цифр цілого числа K, не використовуючи оператор циклу. За допомогою цієї функції знайти суми цифр для п'яти даних цілих чисел.

  2. п Описати рекурсивну функцію MaxElem(A, N) цілого типу, що знаходить максимальний елемент цілочисельного масиву A розміру N (1  N  10), не використовуючи оператор циклу. За допомогою цієї функції знайти максимальні елементи масивів A, BC розміру NA, NBNC відповідно.

  3. п Описати рекурсивну функцію DigitCount(S) цілого типу, що знаходить кількість цифр у рядку S, не використовуючи оператор циклу. За допомогою цієї функції знайти кількість цифр у кожному з п'яти даних рядків.

  4. п Описати рекурсивну функцію Palindrom(S) логічного типу, що повертає True, якщо рядок S є паліндромом (тобто  читається однаково ліворуч праворуч і праворуч ліворуч), і False у противному випадку. Оператор циклу в тілі функції не використати. Вивести значення функції Palindrom для п'яти даних рядків.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]