4
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,_,_,_):- !.
4

2 回答 2

4

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

于 2011-04-22T09:27:26.643 回答
1

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

由于时间的流逝,Turbo Prolog 中的域等教程在网上相当稀缺,因此您最好的选择(如果您缺乏原始文档)可能是查看Visual Prolog 教程之一。

于 2011-04-22T15:59:44.963 回答