Рекурсивное вычисление в Прологе - Prolog
Формулировка задачи:
ребята а не кто не сможет помочь с такой вот штукой) для swi prolog
Создать программу расчета функции.
Программа должна запрашивать у пользователя:
- N - количество членов ряда,
- Х - значение переменной (если в формуле есть Х).
Результат работы:
- приближенное значение функции,
- точное значение функции.
Решение задачи: «Рекурсивное вычисление в Прологе»
textual
Листинг программы
y(N, X) :- y(N, 1, X). y(N, K, 0) :- K > N, !. y(N, K, X) :- KK is K + 1, y(N, KK, XX), X is sqrt(K + XX).
Объяснение кода листинга программы
y(N, X)- внешний вид целиy(N, 1, X)- рекурсивный вызов цели с аргументами(N, 1, X)y(N, K, 0)- базовый случай, когдаKбольшеN, то есть уравнение не имеет корняKK is K + 1- присваивание переменнойKKзначениеK + 1y(N, KK, XX)- рекурсивный вызов цели с аргументами(N, KK, XX)X is sqrt(K + XX)- вычисление значенияXкак квадратного корня из суммыKиXXsqrt(K + XX)- вычисление квадратного корня от суммыKиXXс помощью встроенного математического оператораsqrtK > N- базовый случай, когдаKбольшеN, то есть уравнение не имеет корня!- знак прекращения поиска (операторcut)KK is K + 1- присваивание переменнойKKзначениеK + 1y(N, KK, XX)- рекурсивный вызов цели с аргументами(N, KK, XX)X is sqrt(K + XX)- вычисление значенияXкак квадратного корня из суммыKиXXsqrt(K + XX)- вычисление квадратного корня от суммыKиXXс помощью встроенного математического оператораsqrtK > N- базовый случай, когдаKбольшеN, то есть уравнение не имеет корня!- знак прекращения поиска (операторcut)KK is K + 1- присваивание переменнойKKзначениеK + 1y(N, KK, XX)- рекурсивный вызов цели с аргументами(N, KK, XX)X is sqrt(K + XX)- вычисление значенияXкак квадратного корня из суммыKиXXsqrt(K + XX)- вычисление квадратного корня от суммыKиXXс помощью встроенного математического оператораsqrtK > N- базовый случай, когдаKбольшеN, то есть уравнение не имеет корня!- знак прекращения поиска (операторcut)