Prolog中的乘积

Prolog中的乘积,prolog,Prolog,在Prolog中给出递归定义: 定义一个谓词prodL,N,它接受一个数字列表L 并计算列表中数字的乘积N 我已经找到了一种方法,可以实现总额: sum([],0). sum([X|L],N) :- sum(L,N1),N is N1 + X. 请帮帮我。我已经尝试了很长一段时间,它仍然不起作用 product(L, N) :- product(L, 1, N). product([], X, N) :- N is X. product([H|T], X, N) :- X1 is X*

在Prolog中给出递归定义:

定义一个谓词prodL,N,它接受一个数字列表L 并计算列表中数字的乘积N

我已经找到了一种方法,可以实现总额:

  sum([],0).

 sum([X|L],N) :- sum(L,N1),N is N1 + X.
请帮帮我。我已经尝试了很长一段时间,它仍然不起作用

product(L, N) :- product(L, 1, N).
product([], X, N) :- N is X.
product([H|T], X, N) :- X1 is X*H, product(T, X1, N).

在这种情况下,您需要一个临时计数器X。你把求和错当成了乘法。

这似乎对我不起作用。它一直说列表的乘积是0。更改了代码,现在它工作了;你必须从1开始计数,而不是从0开始,以使乘法分数不同于0。你找到了方法还是找到了代码?