【发布时间】:2016-11-23 14:54:30
【问题描述】:
我想创建一个程序,它应该确定两个长度相等的列表之间的差异,并给出一个变量中差异的数量。到目前为止我的代码是:
difference([],[],0).
difference(L1,L2,N) :-
L1=[H1|T1],
L2=[H2|T2],
H1=H2,
difference(T1,T2,N).
difference(L1,L2,N) :-
L1=[H1|T1],
L2=[H2|T2],
H1\=H2,
NZ is N + 1,
difference(T1,T2,NZ).
该程序适用于两个相同的列表,但它不计算列表之间的差异,例如“difference([1,2,3],[1,2,4],N)”给了我错误“参数没有充分实例化”。如何解决这个问题?
提前致谢!
【问题讨论】:
-
以下之一:不要使用尾递归;使用蓄电池;使用 clp(fd) 作为计数器。 Stackoverflow 上有大量所有三种方法的示例。
-
我不知道怎么用,你能在我的代码中实现吗?谢谢!
-
不行,你应该先自己看,尝试编码,有问题再问。
标签: prolog instantiation-error