Ответ в теме: Подсчитать отрицательные числа, сформировать список позиций на Prolog

      Комментарии к записи Ответ в теме: Подсчитать отрицательные числа, сформировать список позиций на Prolog отключены

Главная Форумы Программирование Помощь с решением задач на Prolog Задачи на списки Подсчитать отрицательные числа, сформировать список позиций на Prolog Ответ в теме: Подсчитать отрицательные числа, сформировать список позиций на Prolog

#1803

negative_count([], 0):-!.
negative_count([Head|Tail], Count):-
  Head >= 0, !, 
  negative_count(Tail, Count).
negative_count([_Head|Tail], Count):-
  negative_count(Tail, TailCount), 
  Count is TailCount + 1.

  1. в пустом списке нет отрицательных чисел (их 0);
  2. исходный список разделяется на голову (Head) и хвост (Tail);
  3. если Head > 0, то в качестве результата (Count) функция вернет значение, полученное при рекурсивной обработке хвоста (Tail);
  4. иначе (если Head < = 0), исходный список разделяется на голову (она не важна, поэтому заменена символом подчеркивания) и хвост (Tail). К значению (TailCount), полученному при рекурсивной обработке хвоста прибавляется 1 результат сохраняется в Count, которое и возвращается правилом.