count([],0).
count([_|Tail], N) :- count(Tail, N1), N is N1 + 1.
这会计算所有元素,但我只需要计算数字。
答案 0 :(得分:3)
Prolog有一个ISO内置谓词number/1
,用于检查给定参数是否为数字。
我们可以简单地使用if-then-else语句来增加N is N1+1
或设置N = N1
,如:
count([],0).
count([H|Tail], N) :-
count(Tail, N1),
( number(H)
-> N is N1 + 1
; N = N1
).
答案 1 :(得分:1)
您可以使用number/1
iso内置谓词:
count([],0).
count([H|Tail], N) :- number(H),count(Tail, N1), N is N1 + 1.
count([H|Tail], N) :- \+number(H),count(Tail, N).