我用的是古老的涡轮增压prolog.并且在以下代码中不断遇到错误:-拼写错误或未声明谓词


domains
    A,B,C = symbol
    N,P = integer
predicates
    tower(integer,symbol,symbol,symbol,integer)
    go
clauses
    go :- clearwindow,
          write("enter value of N (For Transfering from A To B)"),
          readint(N),
          tower(N,'a','b','c',N).
    tower(N,A,B,C,P):-
        N > 1,
        P is N-1
        tower(P,A,C,B,P),
        write([move , A,B]),nl,
        tower(P,C,B,A,P).
        tower(0,_,_,_):- !.

P is N-1后面少了一个逗号

另外,您的域声明没有意义。该语法不是用于将变量与域关联(符号和整数是预定义的),而是用于从预定义的域创建专门的域。你的程序似乎不需要任何域声明。

由于时间的推移,Turbo Prolog中关于域等的教程在网上相当稀缺,所以你最好的选择(如果你缺乏原始文档)可能是看一个Visual Prolog教程。

尝试将is替换为= [Like: P = N-1]

相关内容

  • 没有找到相关文章