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

Prolog编写replace1谓词:实现任意元素替换为自身相乘形式

问题原因

原有代码的问题出在is/2谓词的使用:is/2会对右侧表达式做算术求值,仅支持数字类型的操作数,遇到aa这类原子时会抛出异常,和你要构造元素*元素复合项的需求不匹配。

修改方案

你不需要对表达式做算术求值,直接让输出列表的对应位置元素和X*X合一即可,同时原有代码中的截断!没有必要可以删除,修改后代码如下:

replace1([], []).
replace1([X | Xs], [X * X | Zs]) :-
  replace1(Xs, Zs).

效果验证

执行查询replace1([1, aa, 3], L2).,即可得到预期结果:
L2 = [1 * 1, aa * aa, 3 * 3].


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 12:30:04