Ответ в теме: Сумма чисел от 1 до N на Prolog

      Комментарии к записи Ответ в теме: Сумма чисел от 1 до N на Prolog отключены
#3047

predicates
  nondeterm sum(integer, integer)
clauses
  sum(1, 1):-!.
  sum(N, Sum):-
  	NextN = N - 1,
  	sum(NextN, NextSum),
  	Sum = NextSum + N.
  	
goal 
  write("enter N: "),
  readInt(N),
  sum(N, Sum).

Решение рекурсивное, поэтому сначала описываем условие выхода из рекурсии. Если N равно единице, то и сумма равна единице, т.е. рекурсивный вызов не требуется. В остальных случаях мы выполняем рекурсивную обработку для N-1 и прибавляем к результату значение N.