【发布时间】:2020-01-29 05:23:35
【问题描述】:
我写了一个谓词,它应该遍历一个数字列表并将当前数字与下一个数字进行比较,然后将更大的数字添加到它应该返回的列表中。最后一个数字只是简单地添加到列表中。
例如:
[1,2,3] 应该返回 [2,3,3]
[3,5,6,6,5,9] 应该返回 [5,6,6,6,9,9]
问题
谓词找到答案(它写出来),但它没有统一(?)它并继续返回[]。
代码:
head([H|_], H).
head([],[]).
maximize([], X) :- write(X).
maximize([H|T], X) :-
(head(T, N), N = []) -> (append(X, [H], L), maximize([], L)) ;
(head(T, N), H < N) -> (append(X, [N], L), maximize(T, L)) ; (append(X, [H], L), maximize(T, L)).
【问题讨论】:
标签: prolog unification