我写了这段代码:
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] 删除。
我来说两句