我遇到非常奇怪的行为(对我来说)。根据我的理解,一旦执行通过一次剪切,它就不能回溯到它之上。但这正是代码所做的。有人可以解释为什么这样做吗? 下面是代码: example([],[]).
example([X,Y,Z|Tail],[Z|NewTail]) :-
X < Y,
example(Tail,NewTail).
example([X,Y,Z|Tail],[X|New
我编译使用GCC的选项-O0 -g3所有源文件,然后我跑了GDB相应的二进制文件。收到SIGABRT后,我进行了回溯。 下面是从运行 “崩溃” 输出在GDB中: terminate called recursively
terminate called recursively
terminate called after throwing an instance of 'std::out_of