Предикат y(N), выводящий на экран результат выражения для заданного N - Prolog

Узнай цену своей работы

Формулировка задачи:

Предикат y(N), выводящий на экран результат выражения для заданного N Вот код. В чем ошибка? подскажите пожалуйста.
Листинг программы
  1. sum(I,2,S) :- S is I+1.
  2. sum(I,N,S) :- J is N-1, sum(I,J,Q), S is log(I)/log(J)+Q.
  3. sum(N,N,1).
  4. sum(I,N,P) :- sum(I,N,S), I1 is I+1, sum(I1,N,P1), P is P1+S.
  5. task(N,R) :- sum(2,N,R), write(R).
  6. ?- task(5,R).

Решение задачи: «Предикат y(N), выводящий на экран результат выражения для заданного N»

textual
Листинг программы
  1. % insum(N, I, J, S)
  2. insum(N, _, J, 0) :-
  3.     J > N,
  4.     !.
  5. insum(N, I, J, S) :-
  6.     JNext is J+1,
  7.     insum(N, I, JNext, SNext),
  8.     S is log(I)/log(J)+SNext.
  9.  
  10. % outsum(N, I, S)
  11. outsum(N, I, 0) :-
  12.     I > N,
  13.     !.
  14. outsum(N, I, S) :-
  15.     INext is I+1,
  16.     outsum(N, INext, SNext),
  17.     insum(N, I, 2, SI),
  18.     S is SI + SNext.
  19.  
  20. task(N, R) :- outsum(N, 1, R), write(R).
  21.  
  22. ?- task(5, R).

Объяснение кода листинга программы

Код решает задачу вычисления суммы чисел от 1 до N и выводит результат на экран. В коде присутствуют четыре функции:

  1. insum(N, I, J, S) - вычисляет сумму от I до J с шагом S и выводит результат на экран.
  2. outsum(N, I, S) - вычисляет сумму от I до N с шагом S и выводит результат на экран.
  3. task(N, R) - вызывает функцию outsum(N, 1, R), вычисляет и выводит результат на экран.
  4. main - точка входа в программу, вызывает функцию task(5, R), вычисляет и выводит результат на экран. Список вызовов функций в порядке их использования в коде:
  5. insum(N, _, J, 0)
  6. insum(N, I, J, S)
  7. outsum(N, I, S)
  8. outsum(N, I, 0)
  9. task(N, R)
  10. main

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы