Предикат y(N), выводящий на экран результат выражения для заданного N - Prolog
Формулировка задачи:
Предикат y(N), выводящий на экран результат выражения для заданного N Вот код. В чем ошибка? подскажите пожалуйста.
Листинг программы
- sum(I,2,S) :- S is I+1.
- sum(I,N,S) :- J is N-1, sum(I,J,Q), S is log(I)/log(J)+Q.
- sum(N,N,1).
- sum(I,N,P) :- sum(I,N,S), I1 is I+1, sum(I1,N,P1), P is P1+S.
- task(N,R) :- sum(2,N,R), write(R).
- ?- task(5,R).
Решение задачи: «Предикат y(N), выводящий на экран результат выражения для заданного N»
textual
Листинг программы
- % insum(N, I, J, S)
- insum(N, _, J, 0) :-
- J > N,
- !.
- insum(N, I, J, S) :-
- JNext is J+1,
- insum(N, I, JNext, SNext),
- S is log(I)/log(J)+SNext.
- % outsum(N, I, S)
- outsum(N, I, 0) :-
- I > N,
- !.
- outsum(N, I, S) :-
- INext is I+1,
- outsum(N, INext, SNext),
- insum(N, I, 2, SI),
- S is SI + SNext.
- task(N, R) :- outsum(N, 1, R), write(R).
- ?- task(5, R).
Объяснение кода листинга программы
Код решает задачу вычисления суммы чисел от 1 до N и выводит результат на экран. В коде присутствуют четыре функции:
- insum(N, I, J, S) - вычисляет сумму от I до J с шагом S и выводит результат на экран.
- outsum(N, I, S) - вычисляет сумму от I до N с шагом S и выводит результат на экран.
- task(N, R) - вызывает функцию outsum(N, 1, R), вычисляет и выводит результат на экран.
- main - точка входа в программу, вызывает функцию task(5, R), вычисляет и выводит результат на экран. Список вызовов функций в порядке их использования в коде:
- insum(N, _, J, 0)
- insum(N, I, J, S)
- outsum(N, I, S)
- outsum(N, I, 0)
- task(N, R)
- main
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д