例如,如果我有一个列表 [1,1,2,3,5,1]
,我想计算这个列表中 1 的数量,我该怎么做?
我写了类似的东西:
count([], 0).
count([H|T], N) :-
count(T, X),
( H =:= 1
-> N is X+1
; N is X
),
N > 0.
在这个递归中,我想做如果 Head 等于 1,则计数 + 1,如果 Head 不为 1,则计数保持不变。但是,如果列表中的内容不是 1,它会返回 false。我知道问题在于,只要元素不满足 if 语句,它就会失败;它永远无法到达 else 语句。我该如何解决?请帮忙!!!!
最佳答案
尝试这个:
count([],0).
count([1|T],N) :- count(T,N1), N is N1 + 1.
count([X|T],N) :- X \= 1, count(T,N).
关于list - Prolog - 如何计算列表中满足特定条件的元素数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46902653/