- •1.1.2 Структура функцій програми
- •1.1.3 Правила синтаксису
- •1.1.4. Типи даних
- •1.1.5. Функції введення та виведення даних
- •1.2 Приклад програми Умова задачі
- •Особливості використання функцій вводу та виводу
- •1.3 Технологія виконання лабораторної роботи
- •1.4. Варіанти завдань
- •1.5 Контрольні запитання
- •Розгалужені обчислювальні процеси Лабораторна робота 2
- •2.1 Теоретичні відомості
- •2.1.1. Вибір із двох альтернатив
- •2.1.2. Вкладеність конструкцій вибору
- •2.1.3. Операторний блок
- •2.1.4. Поліваріантний вибір
- •2.2. Приклади програм
- •2.3. Варіанти завдань
- •2.4 Контрольні запитання
- •Циклічні обчислювальні процеси Лабораторна робота 3
- •3.1 Теоретичні відомості
- •3.1.1. Цикл із передумовою
- •3.1.2. Цикл із постумовою
- •3.1.3. Цикл із лічильником
- •3.1.4. Переривання та продовження циклу
- •3.2. Приклад алгоритму та програми
- •3.3. Варіанти завдань
- •3.4 Контрольні запитання
- •Цикли з розгалуженням Лабораторна робота 4
- •4.1 Теоретичні відомості
- •4.1.1. Рекурентні співвідношення
- •4.1.2. Функції користувача
- •4.2. Приклад алгоритму та програми
- •Алгоритм задачі
- •Код програми
- •4.3. Варіанти завдань
- •4.4 Контрольні запитання
- •Рекурсивні функції Лабораторна робота 5
- •5.1 Теоретичні відомості
- •5.2. Приклад алгоритму та програми
- •5.3. Варіанти завдань
- •6.1.2. Оголошення та ініціалізація
- •6.1.3. Операції над покажчиками
- •6.1.4. Методи розв’язанні нелінійних рівнянь
- •6.2. Приклад алгоритму та програми
- •6.3. Варіанти завдань
- •6.4 Контрольні запитання
- •Одновимірні масиви Лабораторна робота 7
- •7.1 Теоретичні відомості
- •7.2. Приклад алгоритму та програми
- •Алгоритм програми
- •Код програми
- •7.3. Варіанти завдань
- •7.4 Контрольні запитання
- •Багатовимірні масиви Лабораторна робота 8
- •8.1 Теоретичні відомості
- •8.1.1. Оголошення багатовимірних масивів. Доступ до елементів
- •8.1.2. Базові операції обробки двовимірних масивів
- •8.2. Приклад алгоритму та програми
- •8.3. Варіанти завдань
- •9.1.2. Деякі функції обробки рядків
- •9.2. Приклад алгоритму та програми
- •9.3. Варіанти завдань
- •9.4 Контрольні запитання
- •Структури та масиви структур Лабораторна робота 10
- •10.1 Теоретичні відомості
- •10.2. Приклад алгоритму та програми
- •Алгоритм задачі
- •Приклад коду
- •10.3. Варіанти завдань
- •10.4 Контрольні запитання
4.4 Контрольні запитання
-
Що таке ітераційний цикл?
-
Які причини зациклювання програм?
-
За яких умов цикл не виконується?
-
У чому полягають особливості застосування операторів break та continue?
-
Яке призначення функцій С++? Яка роль функції main()?
-
Що таке прототип функції? Що таке визначення функції?
-
Дати поняття рекурсивних функцій. Технологія припинення рекурсивного виклику.
-
Чим пряма рекурсія відрізняється від непрямої?
-
Якими бувають оператори виклику функцій?
-
Як викликається функція, що повертає значення void?
-
Як викликається функція, що повертає значення будь-якого типу, який відрізняється від типу void?
-
Значення якого типу повертає функція, якщо тип не вказано?
-
Скільки значень може повернути функція?
Рекурсивні функції Лабораторна робота 5
Мета роботи.
-
вивчити особливості рекурсивних процесів
-
опанувати технологію рекурсивних обчислень
-
навчитися розробляти алгоритми та програми із застосуванням рекурсивних функцій
5.1 Теоретичні відомості
Означення називається рекурсивним, якщо воно задає елементи множини за допомогою інших елементів цієї самої множини. Об' єкти, що задані рекурсивним означенням, також називаються рекурсивними. Під терміном "рекурсивно задана функція" розуміється така функція, значення якої для данноrо apгумента обчислюється за допомогою значень для попередніх apгументов. При кожній конкретній реалізації процес обчислення такої функції задається рекурентною послідовністю. У практиці обчислень це пов'язано з тим, що, маючи справу з реальною функцією, ми не обчислюємо її в реальному завданні на усій числовій осі, а обчислюємо для деякої кінцевої послідовності значень apгументов.
Рекурсія — це такий спосіб організації обчислювального процесу, за якого функція звертається сама до себе. Такі звернення називаються рекурсивними викликами, а функція, що містить рекурсивні виклики, — рекурсивною.
Перед тим, як записати рекурсивну функцію будь-якою мовою програмування, необхідно записати рекурентне співвідношення, що визначає метод обчислення функцій. Рекурентне співвідношення повинне містити як мінімум дві умови:
-
умову продовження рекурсії (крок рекурсії);
-
умову закінчення рекурсії.
Розглянемо функцію , де аргумент є цілим додатним числом, таким, що або . Потрібно обчислити значення членів послідовності Рекурсивне завдання послідовності як послідовності значень функції включає такі два етапи.
-
Функція задається безпосередньо у вигляді числових значень для деякої конечної множини початкових значень аргументу .
-
Задається метод або формула, які дозволяють, знаючи усі значення функції при , обчислити її значення при , тобто знайти .
В результаті отримуємо peкуррентні співвідношення, що описують рекурсивно задану функцію , рівносильну послідовності .
Отриманий запис цих двох етапів
називається рекурентним співвідношенням.
Рекурсію реалізовують за допомогою виклику функції самої себе. При цьому в тілі функції спочатку слід перевіряти умову продовження рекурсії. Якщо вона істинна, то виходити з функції. Інакше здійснювати рекурсивний крок.
В рекурсивних підпрограмах можна виділити два процеси: рекурсивне занурення підпрограми у себе, що відбувається доти, доки параметр не сягне граничного значення, та рекурсивне повернення з підпрограми, що відбувається доти, доки параметр не сягне початкового значення. Рекурсія реалізує нескінченний цикл, отже застосовувати її слід тільки у випадках, коли без неї неможливо обійтися.
Розглянемо рекурсивну функцію, що обчислює n-й член послідовності чисел Фібоначчі. Ці числа визначаються рекурентним співвідношенням:
Програмний код, що реалізує рекурсивні обчислення, такий:
int Fib(int n) { if (n == 0) return 0; else if (n == 1) return 1; else return Fib(n–1)+Fib(n–2); }