Определить рекурсивную функцию, которая вычисляет приближенное значение - Lisp
Формулировка задачи:
Определить рекурсивную функцию, которая вычисляет приближенное значение 1/e путем суммирования первых членов ряда до тех пор, пока слагаемые превышают ε = 0,0001.
Решение задачи: «Определить рекурсивную функцию, которая вычисляет приближенное значение»
textual
Листинг программы
(defun inve (eps k s a) (if (< (abs a) eps) s (inve eps (+ k 1) (+ s a 0.0) (/ (- a) k)))) (defun inv-e (eps) (inve eps 1 0 1))
Объяснение кода листинга программы
В данном коде определены две функции:
inve
— рекурсивная функция, которая принимает четыре аргумента:eps
,k
,s
иa
. Если абсолютное значениеa
меньшеeps
, то возвращается значениеs
. Иначе, вызывается рекурсивно функцияinve
с аргументами:eps
,k+1
,s+a
иk
.inv-e
— функция, которая вызывает функциюinve
с аргументами:eps
и1
. Список вызовов функций и их аргументов:inve(eps=1.0e-6, k=1, s=0, a=1)
inve(eps=1.0e-6, k=2, s=1, a=1.0)
inve(eps=1.0e-6, k=3, s=1.0, a=2.0)
inve(eps=1.0e-6, k=4, s=2.0, a=3.0)
inve(eps=1.0e-6, k=5, s=3.0, a=4.0)
inve(eps=1.0e-6, k=6, s=4.0, a=5.0)
inve(eps=1.0e-6, k=7, s=5.0, a=6.0)
inve(eps=1.0e-6, k=8, s=6.0, a=7.0)
inve(eps=1.0e-6, k=9, s=7.0, a=8.0)
inve(eps=1.0e-6, k=10, s=8.0, a=9.0)
inve(eps=1.0e-6, k=11, s=9.0, a=10.0)
inve(eps=1.0e-6, k=12, s=10.0, a=11.0)
inve(eps=1.0e-6, k=13, s=11.0, a=12.0)
inve(eps=1.0e-6, k=14, s=12.0, a=13.0)
inve(eps=1.0e-6, k=15, s=13.0, a=14.0)
inve(eps=1.0e-6, k=16, s=14.0, a=15.0)
inve(eps=1.0e-6, k=17, s=15.0, a=16.0)
inve(eps=1.0e-6, k=18, s=16.0, a=17.0)
inve(eps=1.0e-6, k=19, s=17.0, a=18.0)
inve(eps=1.0e-6, k=20, s=18.0, a=19.0)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д