Найти произведение всех положительных элементов списка - Prolog
Формулировка задачи:
Добрый день.
Подскажите пожалуйста что я сделал не так? Необходимо перемножить все положительные элементы.
Спасибо за помощь.
Решение задачи: «Найти произведение всех положительных элементов списка»
textual
Листинг программы
domains list=integer* predicates mul(list,integer,integer). clauses mul([],Result,Result). mul([Head|Tail],Result, Counter):- NewCounter=Counter*Head, mul(Tail,Result,NewCounter). goal mul([2,-3,4,-1,2],L,1),write(L),nl,fail.
Объяснение кода листинга программы
domains
- определение типа данных, которые могут использоваться в программе. В данном случае, список целых чисел (integer*
).predicates
- определение пользовательских предикатов, которые могут быть использованы в программе. В данном случае, предикатmul
, который принимает три аргумента: список (list
), результат умножения (integer
), и счетчик (integer
).clauses
- определение правил, которые определяют поведение предикатов. В данном случае, два правила: одно для пустого списка, где результат умножения и счетчик равны результату, и второе для непустого списка, где результат умножения равен произведению текущего элемента и счетчика, а счетчик обновляется для следующего элемента списка.goal
- определение цели, которую нужно достичь. В данном случае, список[2,-3,4,-1,2]
умножается на 1, и результат присваивается переменнойL
. Затем, результат выводится на экран и программа завершается с ошибкой (fail
).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д