odd_even(X) :-
(
X < 10,
myOdd(1, X)
;
myOdd(1, 9),
myEven(10, X)
).这个语句是否被认为是prolog中的if else语句,因为我在prolog if语句中的理解应该是这样的。( condition -> then_clause;else_clause )使用swish prolog
发布于 2020-10-21 19:07:45
是在Prolog中被视为if else语句的语句,因为我在Prolog if语句中的理解应该是这样的。( condition -> then_clause;else_clause)。
不,您给出的代码不是( condition -> then_clause ; else_clause)格式,因为没有->运算符。
也许你是想写
odd_even(X) :-
(
X < 10
->
myOdd(1, X)
;
myOdd(1, 9),
myEven(10, X)
).由于您的谓词名称暗示了一个想法,而您的代码做了我不知道的事情,因此我甚至不会尝试理解或修复这一点。
此外,请注意,我重新格式化了您的源代码,以便更容易理解,快速浏览。
发布于 2020-10-21 20:16:30
这个解决方案是替换if-then-else结构的基本Prolog模式。Prolog调用第一个子句:如果是真的,那么X< 10!在第一个子句中停止使用第二个子句。如果第一个子句确定X< 10不是真的,则使用第二个子句。
odd_even(X)
:-
X < 10 ,
! ,
myOdd(1,X)
.
odd_even(X)
:-
! ,
myOdd(1,9) ,
myEven(10,X)
.https://stackoverflow.com/questions/64461985
复制相似问题