以以下形式定义递归规则
sum(Lst, Total)
,它可以计算一个声明列表的总和,其中Lst的格式为[[s1, p1], [s2, p2], … [sn, pn]]
所以我只想求和p而s不是数字。 我该怎么办?
sum([[az, 7], [ca, 40], [ne, 3], [ut, 3], [or, 4],Total).
它应该返回Total = 60
。但我的代码未返回任何内容
我有
sum([[_,X]|T],Total) :-
sum(T,Rest),
Total is X + Rest.
答案 0 :(得分:2)
sum(L,Total):-总计(L,0,Total)。
sum([],总计,总计)。
sum([[[_ | HT] T],Temp,Total):-Temp1是temp + HT,total(T,Temp1,Total)。
答案 1 :(得分:2)
您只缺少列表为空的基本情况!
sum([],0).
sum([[_,X]|T],Total) :-
sum(T,Rest),
Total is X + Rest.