我正在尝试解决一些prolog练习以学习语言,并且我在序言列表中添加数字时遇到了问题。
例如我有列表[1,2,3],我希望输出数字为6。
我写了这段代码,但它没有用。
list_adder([H|T],S):- S is H + T.
任何人都可以解释原因吗?
答案 0 :(得分:2)
试试这个:
list_adder([ ],0).
list_adder([X|L],Sum) :- list_adder(L,SL), Sum is X + SL.
答案 1 :(得分:1)
这是因为示例中的H + T
与1 + [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).