#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)
Комментариев нет:
Отправить комментарий