Сумма ряда. Рекурсия - Prolog
Формулировка задачи:
Здравствуйте.
Есть задача:
Решается рекурсивным методом в SWI-Prolog 6.0.1
Написал следующий код:
При вводимых данных fun(5,S). ответ по идее должен быть S = 11, но на деле получается S = 5.720000000000001
Укажите пожалуйста на мою ошибку, только только начал заниматься прологом и как-то встрял на элементарной задаче.
Решение задачи: «Сумма ряда. Рекурсия»
textual
Листинг программы
?- fun(5, f(I^2/5, I), S). I = 5, S = 11.0.
Объяснение кода листинга программы
Код решает задачу вычисления суммы ряда, используя рекурсию. Вот список шагов, описывающих, что происходит в коде:
fun(5, f(I^2/5, I), S)
- это входные данные для программы. Здесь5
- это значение первого аргумента функцииfun
,f(I^2/5, I)
- это второй аргумент функцииfun
, аS
- это третий аргумент функцииfun
.- Программа вызывает функцию
fun
с аргументами5
,f(I^2/5, I)
,S
. - Внутри функции
fun
происходит следующее:- Значение первого аргумента
5
присваивается переменнойI
. - Значение второго аргумента
f(I^2/5, I)
присваивается переменнойS
. - Выполняется рекурсивный вызов функции
fun
с аргументамиI^2/5
иI
.
- Значение первого аргумента
- Рекурсивный вызов функции
fun
возвращает результат11.0
, который присваивается переменнойS
. - Функция
fun
возвращает результатS
. - В исходной программе значение переменной
S
выводится на экран. Таким образом, результатом выполнения данного кода будет число11.0
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д