Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 3

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

ЗАПОРІЗЬКИЙ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ


МАТЕМАТИЧНИЙ ФАКУЛЬТЕТ
КАФЕДРА ПРОГРАМНОЇ ІНЖЕНЕРІЇ

Дисципліна «Практикум програмування»


Лабораторна робота № 9

Виконав студент гр. 6.1210-2пі


Новіков Олег

Перевірив: Викладач
Мухін Віталій Вікторович

Запоріжжя
2022
Хід роботи
Завдання №1
Визначити значення функції

Код
import math

def func(n):
    res = 1
    for i in range(n+1):
        res *= (-1**i-1)/(((2*i)-1)*3**i-1)
    return 2*math.sqrt(3)*res
Результат
print(func(5))

print(func(2))

Завдання №2
Код
import time as t

def res_factorial(number):
    if number == 0:
        return 1
    else:
        return number * res_factorial(number - 1)

def factorial(number):
    res = 1
    for i in range(1, number+1):
        res = res * i
    return res

print(res_factorial(995), t.process_time())
print(factorial(1000), t.process_time())
Робота та порівняння
Основні відмінності
По результатам бачимо, що алогоритми працють майже одинаково, проте
якщо брати більші числа. Сам рекурсивний алгоритм вже не будет працювати, так
як в Python стоїть обмеження на рекурсію, з прикладу бачимо, що воно дорівнює
995. Ну навіть якщо не дивиться на це, виклик кожної функції декілька разів, це все
нове області бачення, нові змінні і тд. А це все пам'ять з цього робимо такий
висновок, рекурсивний алгоритм не є ефективним для обчислення великих чисел,
проте для малих між нічим не програє звичайному

You might also like