用swish启动if-else语句


odd_even(X) :-
(
X < 10, 
myOdd(1, X)
; 
myOdd(1, 9), 
myEven(10, X)
).

这个语句是否被认为是prolog中的if-else语句,因为我在prolog中理解的if语句应该是这样的。(条件->then_clause;else_clause(使用swish-prolog

这个语句在Prolog中被认为是if-else语句吗?因为我在Prolog的理解是if语句应该是这样的。(条件->then_clause;else_clause(。

否,您给出的代码不是( condition -> then_clause ; else_clause)形式,因为没有->运算符。

也许你想写

odd_even(X) :-
(
X < 10
->
myOdd(1, X)
; 
myOdd(1, 9), 
myEven(10, X)
).

由于你的谓词名称暗示了一个想法,而你的代码做了我不知道的事情,我甚至不会试图理解或解决这个问题。

另外,请注意,我重新格式化了您的源代码,以便快速浏览更容易理解。

此解决方案是替换if-then-else构造的基本Prolog模式。Prolog调用第一个子句:如果是true,则X<10!在该第一子句中,停止使用第二子句。如果第一子句确定X< 10不是真的,则使用第二子句。

odd_even(X)
:-
X < 10 ,
! ,
myOdd(1,X)
.
odd_even(X)
:-
! ,
myOdd(1,9) , 
myEven(10,X)
.

最新更新