如何在prolog中“返回”价值?

时间:2015-11-21 16:31:12

标签: prolog

我写了程序,它计算给定列表包含多少奇数。 要使用它,您需要以此格式knelyg([1,2,3],K).键入您的查询。这是我的问题,现在,我的程序将返回false,而不是K=2

我的问题是,如何在不使用程序本身的任何写入功能的情况下确保将K值返回给用户并打印出来?

calc(S,K):-
    S = [First|Tail],
    (First rem 2 =:= 0 -> calc(Tail,K); K1 is K + 1),
    calc(Tail,K1).

 knelyg(S,K):-
    K = 0,
    calc(S,K).

1 个答案:

答案 0 :(得分:1)

保持简单......可能

knelyg([],0). % missing base case
knelyg([First|Tail],K):-
    knelyg(Tail,K1),
    K is K1+(First rem 2).