Сумма ряда. Рекурсия - 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.