プロローグで引数として渡されるリストに値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は、タイプミスと思わアンダーx
を使用して、ほかのヘルプ
プロローグで引数として渡されるリストに値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は、タイプミスと思わアンダーx
を使用して、ほかのヘルプ
cetnost(_, [], 0).
cetnost(X, [X|T], C) :- cetnost(X, T, C1), C is C1 + 1, !.
cetnost(X, [_|T], C) :- cetnost(X, T, C), !.
ようなものが必要。すべてをxに変更すると動作します。また、基本ケースでは、xは必要ありません.cetnost(_、[]、0)を書きます。 – coder