【问题标题】:The number of elements with certain value in list列表中具有特定值的元素个数
【发布时间】:2016-12-08 09:18:29
【问题描述】:

我试图找出在序言中作为参数传递的列表中有多少值为 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。

感谢帮助

【问题讨论】:

  • 问题是您有 x 作为输入,并且在列表和递归中使用大写 X。将所有更改为 x ,它将起作用....此外,在基本情况下,您不需要 x 只需编写 cetnost(_,[ ],0)。

标签: prolog


【解决方案1】:
cetnost(_, [], 0).
cetnost(X, [X|T], C) :- cetnost(X, T, C1), C is C1 + 1, !. 
cetnost(X, [_|T], C) :- cetnost(X, T, C), !. 

【讨论】:

    【解决方案2】:

    除了使用低调的x(这似乎是一个错字)之外,您没有遇到您要查找的元素不是列表头的情况。

    你需要类似的东西

    cetnost(X, [H|T], C) :-
       dif(X, H),
       cetnost(X, T, C).
    

    【讨论】:

      猜你喜欢
      • 2013-10-28
      • 1970-01-01
      • 1970-01-01
      • 2022-01-04
      • 2015-09-09
      • 1970-01-01
      • 2016-06-16
      • 2021-09-25
      • 1970-01-01
      相关资源
      最近更新 更多