这个问题是这样写的:“编写一个Prolog程序,找出数字列表中的最大值。”
我已经使用互联网的力量来帮助找到一个有效的解决方案,但我想对程序本身有一个了解。
max_num([X],X).
max_num([X|Y],X):- max_num(Y,Z), X >= Z.
max_num([X|Y],A):- max_num(Y,A), A > X.
Line1:
max_num([X],X).
我知道Line1正在定义问题的基本模板。X定义列表,另一个X表示该列表中的最大值。
Line2:
max_num([X|Y],X):- max_num(Y,Z), X >= Z.
这就
removeAll(X, [ X | T], [ H1 | T1 ] ):-
( member ( X , T )
-> removeAll ( X , T , [ H1 | T1 ] )
;[ H1 | T1 ] is T
).
removeAll ( X , [ H | T ] , L ):-
removeAll ( X , T , L2 ), append ( [ H ] , L2 , L ).
如果我传递"removeAll(2,[1,1,2],L).",
它会给出错误"ERROR: is/2: Ty