本文介绍了如何在序言中使用递归绘制星形三角形?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

此代码用于绘制三角形请谁能解释一下它是如何工作的

this code using to draw triangle please can any one explain how it work

predicates
star(integer).
count(integer,integer).
clauses
star(1):-write('*'),!.
star(X):-X<=0,!.
star(X):-count(1,X),Z=x-1,nl,star(Z),!.
count(X,Y):-X<=Y,write('*'),X1=X+1,count(X1,Y),!.
count(X<Y):-X>Y,!.

此代码绘制 5 颗星 ,4,3,2,1我如何从 1,2,3,4,5 开始

this code draw 5 star ,4,3,2,1how i doing to begin from 1,2,3,4,5

推荐答案

必须绕过上限:

star :- star(0, 5).

star(C, X) :- C < X, count(0, C), C1 is C+1, star(C1, X).
star(C, X) :- C >= X.

count(X, Y) :- X =< Y, write('*'), X1 is X+1, count(X1,Y).
count(X, Y) :- X > Y, nl.

改回运算符以适合您的序言(即 is 变为 =>= 变为 => 等).请注意,削减不是强制性的...请谨慎使用.

Change back operators to fit your prolog (i.e. is become =, >= become =>, etc).Note that cuts are not mandatory... Use with care.

?- star.
*
**
***
****
*****

这篇关于如何在序言中使用递归绘制星形三角形?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-17 14:15