【发布时间】:2020-05-28 21:36:34
【问题描述】:
我有这个 Prolog 代码:
f([ ],-1).
f([H|T],S):- f(T,S1), S1>0, !, S is S1+H.
f([_|T],S):- f(T,S1), S is S1.
如何避免第二次(冗余)递归调用f(T,S1),在第三个子句中,谓词的整体效果保持不变?
我知道这可以通过定义一个额外的谓词来完成。
如何定义这样的谓词?
【问题讨论】:
-
请指出几个使用这个谓词的例子。这可能会对您有所帮助。
标签: recursion prolog program-transformation