You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 21:36:02