Страницы

Поиск по вопросам

понедельник, 30 марта 2020 г.

Условие выхода из рекурсивной функции (считаем косинус через ряд Маклорена)

#python #алгоритм #математика #рекурсия


Отвечая на этот вопрос, я попытался реализовать рекурсивную функцию для вычисления
косинуса при помощи ряда Маклорена до указанной точности (эпсилон).

Формула:



Никак не могу придумать, как реализовать проверку точности для завершения/выхода
из рекурсии.

Вот набросок функции без проверки точности:

import math

def cosine_rec(x, i=0, err=10**9, eps=1e-5):
    if i < 1:
        return 1
    # как проверить текущую ошибку ???
    res = (-1)**i * (x**(2*i) / math.factorial(2*i))
    return res + cosine_rec(x, i+1, err=err, eps=eps)


PS с итеративным алгоритмом все просто, поэтому нерекурсивные решения прошу не предлагать.
    


Ответы

Ответ 1



def cosine_rec(x, i=0, err=10**9, eps=1e-5): if i < 0: return 1 res = x**(2*i) / math.factorial(2*i) if res <= eps: return (-1)**i * res return (-1)**i * res + cosine_rec(x, i+1, err=err, eps=eps)

Комментариев нет:

Отправить комментарий