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

编写将整数列表所有元素减1的Prolog谓词相关问题求助

代码问题分析

你给出的实现存在两处核心逻辑错误:

  • 未匹配列表结构:输入参数是[H|T]的列表结构,输出结果也需要是对应结构的列表,你直接用L is N-1尝试给整个列表做算术运算,is运算符仅支持数值类算术表达式计算,对递归返回的列表类参数N执行减法会直接触发运行错误。
  • 缺少头部元素处理逻辑:你没有对当前迭代的头部元素H执行减1操作,也没有将处理后的头部元素加入结果列表,完全不满足逐个元素减1的需求。
正确实现代码
% 边界条件:空列表减1后仍为空列表
decremento([], []).
% 非空列表处理逻辑:头部减1,尾部递归处理后拼接为结果
decremento([H|T], [H_dec|T_dec]) :-
    H_dec is H - 1,
    decremento(T, T_dec).
效果验证

运行测试查询:
?- decremento([6, 2, 1, -4], Result).
可得到正确返回结果:
Result = [5, 1, 0, -5]

内容的提问来源于stack exchange,提问作者Fabiola Salomone

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 09:15:02