【发布时间】:2017-12-09 09:08:06
【问题描述】:
我正在尝试在 Prolog 中编写一个尾递归谓词:product(A,B),如果B 是列表A 中的数字的乘积,则这是正确的。这是我目前写的代码:
product(A, B) :- product(A, 1, B).
product(0, B, B) :- !.
product(A, X, B) :- Z is A - 1, Y is X * A, product(Z, Y, B).
代码在没有列表的情况下工作。我对 Prolog 中的列表很陌生,所以我想问一下最好的方法是什么。查询应该是这样的:
?- product([1,2,3], B).
B = 6.
【问题讨论】:
标签: prolog product tail-recursion