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

如何实现Prolog中两个表的乘法函数?

实现Prolog的mult/3函数实现列表“乘法”

你需要的mult(L1, L2, L)函数,核心是将列表L1重复L2的长度次,最终拼接成一个新列表L。比如你给出的例子中,L2有3个元素,所以L1被重复3次后拼接,得到6个x的列表。

递归实现思路

  1. 终止条件:当L2是空列表时,重复0次,结果L也为空列表。
  2. 递归步骤:每次去掉L2的一个元素,递归处理剩余部分得到子结果,再将L1拼接到子结果的前面,最终得到完整结果。

完整代码

% 基础情况:L2为空时,结果为空
mult(_, [], []).

% 递归情况:去掉L2的一个元素,递归处理尾部,再拼接L1和子结果
mult(L1, [_|T], L) :-
    mult(L1, T, Rest),
    append(L1, Rest, L).

测试验证

执行查询:

?- mult([x,x],[x,x,x],R).

会得到输出:

R = [x, x, x, x, x, x]

补充说明

如果你的需求是另一种“乘法”(比如对应元素运算,但从测试用例来看不适用),当前代码完全匹配你给出的示例逻辑。若需调整功能,可修改递归规则中的拼接逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 01:15:53