Prolog - 添加列表编号

时间:2011-05-22 21:41:24

标签: list prolog add

我正在尝试解决一些prolog练习以学习语言,并且我在序言列表中添加数字时遇到了问题。

例如我有列表[1,2,3],我希望输出数字为6。

我写了这段代码,但它没有用。

list_adder([H|T],S):- S is H + T.

任何人都可以解释原因吗?

3 个答案:

答案 0 :(得分:2)

试试这个:

list_adder([ ],0).
list_adder([X|L],Sum) :- list_adder(L,SL), Sum is X + SL.

答案 1 :(得分:1)

这是因为示例中的H + T1 + [2, 3]匹配,这并不意味着什么。您应该进一步处理[2, 3],如第四个答案中所示。

答案 2 :(得分:0)


list_adder(L,X),
        list_adder(L,[],X).

list_adder([],L,X) :-
        length(L,X).
list_adder([N|R1],L1,X) :-
        length(L,N),
        append(L1,L,L2),
        list_adder(R1,L2,X).