Prolog计算二维列表的总和

杂色

我写了这段代码:

sum_list([], 0).
sum_list([H|T], X) :-
   sum_list(T, Rest),
   X is H + Rest.

它计算所有列表元素的总和。例如,如果我打电话:

sum_list([1,2,3], X).

它返回 6。但我希望也能够计算 2D 列表的总和。例如,如果我通过sum_list([[1,2],[3,4]], X). 我会得到 10。但是当我尝试通过这个列表时,我得到:

uncaught exception: error(type_error(evaluable,'.'/2),(is)/2)

错误。这个错误有什么问题?我在网上找不到任何有用的信息。

穆斯塔法·梅西里

sum_list 需要一维数组,您可以尝试以下操作:

sum2D_list([X|T],R):-
sum2D_list(T,R2),
sum_list(X,R3),
R is R3+R2.
sum2D_list([],0).

我试过了

sum2D_list([[1,2],[3,4]],X).

结果是

X = 10.

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章