Prolog - 获取我树中事实列表中的下一个元素

时间:2018-03-01 18:37:43

标签: list recursion tree prolog

我有一个事实清单如下:

place(63,93,mumbai).
place(61,93,paris).
place(63,97,berlin).
place(33,13,calgary).
place(92,32,tokyo).

我想编写一个谓词,其中第一个事实的名称是根,然后将下一个作为子项添加到列表中。 目前我写了这个:

buildTree(t(null, null)).
buildTree(t(Name, [H|[]])) :- place(_,_,Name),   buildTree(H).

我在运行时得到的答案如下:

?- buildTree(T).
T = t(null, null) ;
T = t(mumbai, [t(null, null)]) ;
T = t(mumbai, [t(mumbai, [t(null, null)])]) ;
T = t(mumbai, [t(mumbai, [t(mumbai, [t(null, null)])])]) 

我想要输出的是:

?- buildTree(T).
T = t(null, null) ;
T = t(mumbai, null) ;
T = t(mumbai, [t(paris, null)]) ;
T = t(mumbai, [t(paris, [t(berlin, null)])])  (...) 

知道我的谓词中缺少什么?

0 个答案:

没有答案