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

编写SWI-Prolog程序:输出n×n的‘*’字符方阵

SWI-Prolog 实现n×n字符方阵

以下是实现指定行列数、指定字符方阵的SWI-Prolog程序:

% 基线条件:行数为0时终止递归
square(0, _, _) :- !.

% 递归打印每一行
square(Rows, Cols, Char) :-
    print_row(Cols, Char),
    nl,  % 换行
    NewRows is Rows - 1,
    square(NewRows, Cols, Char).

% 基线条件:列数为0时终止行打印
print_row(0, _) :- !.

% 递归打印一行中的每个字符
print_row(Cols, Char) :-
    write(Char),
    NewCols is Cols - 1,
    print_row(NewCols, Char).

代码说明

  • square/3:主谓词,参数分别为行数、列数、要打印的字符。通过递归逐行打印,每完成一行后换行,直到行数减为0。
  • print_row/2:辅助谓词,负责打印单行的指定数量字符,通过递归逐个输出字符,直到列数减为0。
  • 剪符!用于避免不必要的回溯,提升程序执行效率。

测试示例

调用目标:

?- square(5,5,'*').

输出结果:

*****
*****
*****
*****
*****

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 06:10:30