【发布时间】:2022-01-10 05:53:47
【问题描述】:
我刚从 prolog 开始,我有一个关于递归的问题。
我基本上想计算某个值在列表中出现的次数, 所以我有例如:
count( a, [ a, s, d, f, g, a, s, d, a, s ], W ). W = 3.
我想计算“a”在列表中出现的次数并将数字存储在“W”中。
正确答案是
count( _, [], 0 ).
count( A, [B|S], X ) :- A==B, count( A, S, Y ), X is Y + 1.
count( A, [B|S], X ) :- \+ A == B, count( A, S, X ).
但是,我不明白为什么在第 2 行中,最后是“X 是 Y+1”。 这条线不应该是
count( A, [A|S], X ) :- Y is X + 1, count( A, S, Y ).
在这种情况下,我们首先将 Y 设置为 1,然后通过递归再次将其发送到“count”。
如果有人可以帮助我,我将不胜感激!
【问题讨论】:
标签: list recursion prolog logic