【问题标题】:Product in PrologProlog 中的产品
【发布时间】:2018-04-29 05:55:19
【问题描述】:

在 Prolog 中给出递归定义:

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

我找到了一种适用于总和的方法:

  sum([],0).

 sum([X|L],N) :- sum(L,N1),N is N1 + X.

请帮助我。试了很久还是不行。

【问题讨论】:

    标签: prolog


    【解决方案1】:
    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
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-27
    • 2019-07-29
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多