這是我的任務之一的問題:Prolog的分配
寫
repCount(L, X, N)
時N
在列表L
的X
出現的次數是真實的。
這裏是我的代碼,我試圖解決遞歸問題:
repCount([], X, N) :-
N is 0.
repCount([H|T], X, N) :-
count([H|T], X, N).
count([], X, 0).
count([H|T], X, N) :-
count(T, X, N1),
X =:= H,
N is N1 + 1.
當我提供一個完整的相同號碼的名單像這樣它的工作原理:
?- repCount([2,2,2], 2, N).
N = 3.
但是,如果我提供具有至少一個不同值的列表:
?- repCount([2,2,22], 2, N).
false.
它返回false
。我無法弄清楚爲什麼會發生這種情況,或者如何將其更改爲「跳過」不匹配的值,而不是將整個事件聲明爲false。任何輸入讚賞。
非常感謝,謝謝。 – 2012-02-22 20:04:45
你應該點擊upvote而不是說「謝謝」,而不用提高幫助你的人! – 2012-02-22 20:46:17
目前太缺乏代表性,但只要我有足夠的空間,我們就會做。謝謝你的提示! – 2012-02-22 21:36:52