Рекурсивний виклик функції

Інформація про навчальний заклад

ВУЗ:
Національний технічний університет України Київський політехнічний інститут
Інститут:
Не вказано
Факультет:
РТ
Кафедра:
Не вказано

Інформація про роботу

Рік:
2021
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Алгоритмізація та програмування

Частина тексту файла (без зображень, графіків і формул):

Національний технічний університет України «Київський політехнічний інститут імені Ігоря Сікорського» Алгоритмізація та програмування 1: Базові концепції програмування ЗВІТ до лабораторної роботи № 5 «Рекурсивний виклик функції» Варіант № 13 Дата «21» листопада, 2021 р. Завдання до роботи: 1. Ознайомитись з рекурсивним викликом функції. 2. Розробити алгоритмом розрахунку значення функції за її розкладенням у ряд за умови отримання результату з заданою точністю. Врахувати діапазон дозволених значень для змінної x. 3. У якості індивідуального завдання необхідно написати програмний код, що реалізує алгоритм розрахунку значень функцій за їх розкладенням в ряд із заданою користувачем точністю. / Рисунок 1 Індивідуальне завдання Рекурсивний виклик функції Рекурсивні функції — клас функцій, введений як уточнення класу обчислюваних функцій. В математиці загальноприйнятою є теза про те, що клас функцій, для обчислення яких існують алгоритми, при найширшому розумінні алгоритму, збігається з класом рекурсивних функцій. У зв'язку з цим, рекурсивні функції грають важливу роль в математиці та її застосуваннях, в першу чергу, в математичній логіці, основах математики та кібернетиці, як ефективно обчислювані функції. Тільки такі функції можна обчислювати на електроних обчислювальних машинах та інших цифрових пристроях. Рекурсивна функція (процедура) — це така функція (процедура), серед ВиконуванихОператорів, якою є оператор виклику самої цієї функції (процедури). Рекурсивні функції в програмуванні У програмуванні рекурсія — виклик функції чи процедури з неї самої (звичайно з іншими значеннями вхідних параметрів), чи безпосередньо через інші функції (наприклад, функція А викликає функцію B, а функція B — функцію A). Кількість вкладених викликів функції чи процедури називається глибиною рекурсії. Міць рекурсивного визначення об'єкта в тім, що таке кінцеве визначення здатне описувати нескінченно велике число об'єктів. За допомогою рекурсивної програми ж можливо описати нескінченне обчислення, причому без явних повторень частин програми. Існує спеціальний тип рекурсії, називаний «хвостовою рекурсією». Інтерпретатори і компілятори функціональных мов програмування, що підтримують оптимізацію коду (вихідного і/чи що виконується), виконують хвостову рекурсію в обмеженому обсязі пам'яті за допомогою ітерацій. Варто уникати надлишкової глибини рекурсії, тому що це може викликати переповнення стека викликів. Базисний приклад в мові PHP: При створенні нової функції f() в її тілі викликається та сама функція f() зі зміненим аргументом: function f($x){ Обчислення та друк добутка числа на 2. return $x*2 . '<br />'; $y=$x*2; Виклик функції f() в власному тілі ще раз, але з новим аргументом. f($y); } Приклад 1: Отримуємо числа добуток 1*2 яких ще раз перемножувався на 2: 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048 і тд... Алгоритм роботи програми Створимо три методи, які будуть рекурсивно обчислювати факторіал заданого числа, розкладати в ряд дві тригонометричні функції та обчислювати іх суму, поки її різниця із справжнього значення ф-ії не стане меншою за вказану користувачем точність відповідно. Користувач вводить вхідні дані, які ми маємо перевірити із областю допустимих значень для нашої функції, у випадку неправильного вводу програма надсилає характерне повідомлення та перестає працювати. Отже, обчислюємо функцію двома способами, користуючись створеними методами, та виводимо результат, який треба перевірити калькулятором задля впевненості у правильності виконання. / Рисунок 2 значення тригонометричних ф-ій та відповідні їм суми рядів / Рисунок 3 Блок-схема / Рисунок 4 Результат 1 / Рисунок 5 Результат 2 Висновки: ознайомався із принципом створення та використання рекурсивних функцій. З використанням рекурсивної функції, що обчислює факторіал, порахував суму ряду, яка обчислює тригонометричні функції. До речі, обрахувати суму ряду можно також не циклом, а за допомогою рекурсії, бо майже для всіх циклів є аналоги-методи, що є рекурсивними. Додаток (програмний код) https://replit.com/join/jxmkpikfkv-tr-15-turlak-sergei double get_factorial(double n) { if (n <= 1.0) return 1.0; else return n * get_factorial(n - 1); } double get_sin(double degr, double precision) { double sum = 0; double rad = degr / 180 * M_PI; for (int k = 0; fabs(sin(rad) - sum) > precision; k++) { sum += pow(-1, k) * pow(rad, 2*k + 1) / get_factorial(2*k + 1); } return sum; } double get_cos(double degr, double precision) { double sum = 0; double rad = degr / 180 * M_PI; for (int k = 0; fabs(cos(rad) - sum) > precision; k++) { sum += pow(-1, k) * pow(rad, 2*k) / get_factorial(2*k); } return sum; }
Антиботан аватар за замовчуванням

28.05.2023 18:05-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!