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)
.