【发布时间】:2020-07-16 23:24:27
【问题描述】:
我在 Prolog 中得到了这个任务,但我不知道如何处理它。
我必须编写谓词expression(List,Outcome,Result),它使用List 中的每个元素构建一个算术表达式。它给出了一个Result,它在回溯之前必须等于Outcome。
例如:
?- expression([1, 2, 3, 4], 2, X).
X = 1+ (2+ (3-4))
或
?- expression([1, 2, 3, 4, 5], 2, X).
X = 1+ ((2-3)*4+5)
我尝试过这样的事情:
operation(A, B, A + B).
operation(A, B, A - B).
operation(A, B, A * B).
operation(A, B, A div B).
expression([],_,_).
expression([A,B,D|List],Outcome,Result) :-
operation(A,B,C),
operation(C,D,Result),
Outcome is Result.
这适用于三个元素的列表,但我想将它用于不同大小的列表。我假设我必须使用递归,但是如何?以及如何增加使用括号的可能性?
【问题讨论】:
标签: list recursion prolog expression