gpt4 book ai didi

recursion - 如何在序言中使用递归绘制直角三角形?

转载 作者:行者123 更新时间:2023-12-04 15:10:26 25 4
gpt4 key购买 nike

我得到了这个直角三角形的答案,如下所示:

shape:- shape(0, 6).

shape(S, A) :- S < A,
count(0, S),
S1 is S+1,
shape(S1, A).

shape(S, X) :- S >= X.


count(A, B) :- A =< B,
write('*'),
A1 is A+1,
count(A1,B).

count(A, B) :- A > B, nl.

*
**
***
****
*****
******
我应该修改什么来打印这种类型的直角三角形?
         *
**
***
****
*****
******

最佳答案

shape(S, _) :- S =< 0.
shape(S, N) :- S > 0,
S1 is S-1,
count(0, S1, N),
shape(S1, N).

count(A, _, N) :- A >= N, nl.
count(A, B, N) :- A < N,
( A >= B
-> write('*')
; write('.')
),
A1 is A+1,
count(A1,B, N).

?- shape(6, 6).
.....*
....**
...***
..****
.*****
******
true ;
false.
我在打印空间时遇到问题。 SWI prolog 似乎有一个错误:它要么不打印任何内容,要么 ' ' .所以也许这段代码与你的 prolog 解释器一起运行 write(' ')而不是 write('.') .
该代码与您的非常相似。主要区别在于计数有 3 个参数:迭代器 A , 字符边界编号 B和写入的字符总数( N )。迭代器 A必须小于或等于 N .视情况而定 A >= B它要么打印 '*''.' .此外,我必须将它向后计数,否则树会上下颠倒/从左到右。

关于recursion - 如何在序言中使用递归绘制直角三角形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65277514/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com