我试图找出在prolog中作为参数传递的列表中有多少具有值X的元素。我的代码是
cetnost(x,[],0).
cetnost(x,[X|T],C):- cetnost(X,T,C1),C is C1 + 1.
?- cetnost(a,[a,b,a,a],C).
//false
但它仍然不假。这次递归出了什么问题?如果传递空列表,则将C设置为0,并将每个冒泡递增值递归1,以递归方式冒泡。
感谢您的帮助
答案 0 :(得分:1)
cetnost(_, [], 0).
cetnost(X, [X|T], C) :- cetnost(X, T, C1), C is C1 + 1, !.
cetnost(X, [_|T], C) :- cetnost(X, T, C), !.
答案 1 :(得分:1)
除了使用看似拼写错误的简短x
之外,你没有一个案例,你要找的元素不是列表的头部。
你需要像
这样的东西cetnost(X, [H|T], C) :-
dif(X, H),
cetnost(X, T, C).