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

如何使用Prolog编写谓词实现矩阵所有行的反转操作

解决方案

你现有代码的问题是仅提取了矩阵的第一行进行反转,没有处理剩余行的递归逻辑,也没有将所有反转后的行拼接为新的矩阵,只返回了第一行的反转结果。

正确的递归实现需要包含两个子句:

  • 边界条件:空矩阵的行反转结果仍为空矩阵
  • 递归逻辑:逐行处理,先反转当前行,再递归处理剩余行,将反转后的当前行与剩余行的处理结果拼接为最终输出

完整代码

% 边界条件:空矩阵处理
reverseRows([], []).
% 递归处理:逐行反转
reverseRows([Row|RestRows], [ReversedRow|ReversedRest]) :-
    reverse(Row, ReversedRow),
    reverseRows(RestRows, ReversedRest).

测试效果

输入查询:
reverseRows([[1,2,3],[4,5,6],[7,8,9]], X).
得到输出:
X = [[3, 2, 1], [6, 5, 4], [9, 8, 7]]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 21:24:07