Prolog 计算生成列表的检查次数
我在计算支票数量以生成列表时出错 这是我的密码:Prolog 计算生成列表的检查次数,prolog,Prolog,我在计算支票数量以生成列表时出错 这是我的密码: find(_R1, _R2, [], [],0). find(R1, R2, [[Mark, CName] | T], L,N) :- ( (R1 =< Mark, Mark =< R2),N is N+1 -> L = [CName | L1] ; L = L1 ), find(R1, R2, T, L1,N). N是N+1在Prolog中总是错误的,Prolog
find(_R1, _R2, [], [],0).
find(R1, R2, [[Mark, CName] | T], L,N) :-
( (R1 =< Mark, Mark =< R2),N is N+1
-> L = [CName | L1]
; L = L1
),
find(R1, R2, T, L1,N).
N是N+1在Prolog中总是错误的,Prolog不是C,你必须写N1是N+1,因为当N与一个值统一时,它是不能改变的,所以N永远不等于N+1。 你的代码必须这样写,递归必须在N的演算之前被调用
find(_R1, _R2, [], [],0).
find(R1, R2, [[Mark, CName] | T], L,N):-
find(R1, R2, T, L1,N1),
( (R1 =< Mark, Mark =< R2)
-> L = [CName | L1],N is N1+1
; L = L1, N = N1).
find(_R1,_R2,[]、[]、0)。
查找(R1,R2,[[Mark,CName]| T],L,N):-
查找(R1、R2、T、L1、N1),
((R1=L=[CName | L1],N是N1+1
;L=L1,N=N1)。
[编辑]在你的帖子中,当你调用N是N+1时,N没有值,因为N在调用find(R1,R2,T,L1,N)返回后得到一个值。这是为了建立列表而返回的检查数吗?不是成功的检查数,我认为你可以很容易地修改代码来找到所有检查数。
find(_R1, _R2, [], [],0).
find(R1, R2, [[Mark, CName] | T], L,N):-
find(R1, R2, T, L1,N1),
( (R1 =< Mark, Mark =< R2)
-> L = [CName | L1],N is N1+1
; L = L1, N = N1).