编写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
相关产品推荐
相关产品推荐

