我遇到非常奇怪的行爲(對我來說)。根據我的理解,一旦執行通過一次剪切,它就不能回溯到它之上。但這正是代碼所做的。有人可以解釋爲什麼這樣做嗎? 下面是代碼: example([],[]).
example([X,Y,Z|Tail],[Z|NewTail]) :-
X < Y,
example(Tail,NewTail).
example([X,Y,Z|Tail],[X|New
我通過Learn Prolog Now! 's chapter on cuts閱讀,同時閱讀Bratko的人工智能Prolog編程第5章:控制回溯。起初,似乎剪輯是模仿其他編程語言已知的if-else子句的直接方式,例如, # Find the largest number
max(X,Y,Y):- X =< Y,!.
max(X,Y,X).
然而,正如指出的路線此代碼將在情況下未能在當我