如何在Prolog中实现谓词列表求和?循环内调用谓词
修改list_sum谓词以支持从谓词中取值求和
原代码的核心问题是未通过列表元素(人名)获取对应金额值,且使用了未定义变量temp。以下是修改后的完整实现:
money(jack,600). money(amanda,1200). list_sum([], 0). list_sum([Head|Tail], TotalSum):- money(Head, Amount), % 根据列表中的人名查询对应的金额 list_sum(Tail, Sum1), TotalSum is Amount + Sum1.
关键修改点
- 添加
money(Head, Amount)调用:通过列表中的元素(如jack)从已定义的money/2谓词中取出对应金额值,绑定到变量Amount上 - 替换未定义变量:将原代码中的
temp替换为获取到的Amount,确保当前元素的金额能参与求和计算
调用示例
执行查询:
?- list_sum([jack, amanda], Sum).
会得到结果:
Sum = 1800.
内容的提问来源于stack exchange,提问作者AAA
相关产品推荐
相关产品推荐

