如何使用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
相关产品推荐
相关产品推荐

