DevioLab CRYPTO TRADING AUTOMATION
LIVE
AUTOMATED CRYPTO TRADING • BINANCE
Автоматизуйте свій криптопортфель
Торгові боти DevioLab аналізують крипторинок, автоматично відкривають і закривають позиції та керують вашим портфелем на Binance 24/7.
CRYPTO 80 Bots
BINANCE Spot Trading
TRADING 24 / 7
Спробувати DevioLab
deviolab.com

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

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

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

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

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

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

Національний технічний університет України «Київський політехнічний інститут імені Ігоря Сікорського» Алгоритмізація та програмування 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:32

Коментарі

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

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

Нічого не вибрано
0%

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

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

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

Admin

26.02.2023 12:38

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