【发布时间】:2017-01-21 17:49:55
【问题描述】:
我编写了一个程序来对符号中的数字进行排序,它可以工作,但是在列表末尾给了我一个内存地址,它没有在最后运行。为什么会这样?
separate([],[],[]).
separate([X],X,_):-number(X).
separate([X],_,X).
separate([X|Y],[X|Z],S):-number(X),separate(Y,Z,S).
separate([X|Y],Z,[X|S]):-separate(Y,Z,S).
咨询?- separate([3,a,b,4,5,c],X,Y).时
我明白了:
X = [3, 4, 5|_G2592],
Y = [a, b, c] .
【问题讨论】:
-
看到答案后不要按
Enter,如果按空格键会发生什么。见:Why does SWI-Prolog only give me the first answer? -
在第一次学习 Prolog 时不要使用
X和Y之类的变量,而是使用更有意义的名称,例如Digit、Letter、Digits、Letters、@ 987654332@。一旦你了解发生了什么,你就可以恢复到X和Y等。
标签: prolog