prolog - Prolog-如何仅对另一个列表中的部分列表求和?
问题描述
定义一个递归规则,形式为
sum(Lst, Total)
,可以计算statement列表的总和,其中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.
解决方案
您只缺少列表为空的基本情况!
sum([],0).
sum([[_,X]|T],Total) :-
sum(T,Rest),
Total is X + Rest.
推荐阅读
- angular5 - Angular 5 模板
不会填充 --aot 开关,但不会填充它。没有错误 - java - HTTPClient 可以建立多少个并行连接
- swift - 处理是否应该在警报“之后”进行?
- oracle - 是否可以在没有动态 sql 的情况下将变量列名传递给 ORACLE 更新语句
- tensorflow - 使用连续变量和分类变量的 Tensorflow 嵌入
- c# - 如何将引导程序应用程序包含到 WIX msi 安装程序以检查 .NET 框架?
- deployment - Openshift 部署验证 - 质量检查
- c# - 比较几种注入配置的方式
- python - Python 从 selenium 启动 Chromedriver 在 IDLE 中有效,但在 Visual Studio Code 中无效
- php - 根据匹配的数组 ID 值创建新变量