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
]