我是 prolog 的新手,我正在尝试编写一个谓词,它计算以下内容:给出的谓词名称为 s2int:
- s2int(0,Y) 它应该“返回”Y=0。
- s2int(s(0),Y) => Y=1。
- s2int(s(s(0)),Y) => Y=2。
- s2int(S(s(s(0))),Y) => Y=3。
等等..这是我试图写的(非常糟糕),起初我尝试了这段代码:
s2intAux(0,Y).
s2intAux(X,Y):- X = s(Z) ,Y1 is Y+1, s2intAux(Z,Y1).
但是每当我尝试通过键入 s2intAux(s(0),Y) 来运行它时,我都会收到一条错误消息:“错误:is/2:参数没有充分实例化”,因为 Y 未定义,所以我很好地得到了该错误。然后我尝试了这个:
s2intAux(0,Y).
s2intAux(X,Y):- X = s(Z) ,Y1 is Y+1, s2intAux(Z,Y1).
s2int(X,Y):- Y1 is 0, s2intA(X,Y1).
(我试图以零值开始 Y,但这个根本不起作用)我已经被困了几个小时,这就是为什么我转向你们,请帮助!谢谢你。