我在递归verif(X1,Y1,F)中有一些谓词 . 第一个谓词是gen(X1,Y1,X2,Y2),它接收X1和Y1并产生数字X2和Y2 . 其他谓词是我要验证的谓词 . 如果其中一个谓词返回F = 1,则应使用verif(X2,Y2,F)重新启动循环,但我不知道如何执行此操作 . 如果所有谓词都返回F = 0,则递归结束 . 这是一个例子:
verif(X1,Y1,0).
verif(X1,Y1,F):-
gen(X1,Y1,X2,Y2),
pred1(X2,Y2,A,B,F),
pred2(X2,Y2,C,D,F),
pred3(X2,Y2,E,G,F),
verif(X2,Y2,F).
问题是当3个谓词返回F的不同值时,它将失败 . 一种方法是使用谓词重复,直到没有谓词失败,但这样谓词gen(X1,Y1,X2,Y2)总是会生成相同的X2和Y2,因为它总是会收到相同的X1和Y1 .
1 回答
我认为你可以使用不同的变量,然后测试值
或者更简单