这是来自Learn Prolog Now的练习3.5 .他们在解释列表之前把它放在一边所以我需要一个不涉及列表的过程.
任务是交换嵌套二叉树的叶子.如果查询是
swap(tree(tree(leaf(1), leaf(2)), leaf(4)), T).
答案应该是
T = (tree(leaf(4), tree(leaf(2), leaf(1))).
同
swap((X, Y), (Y, X)). swap(tree(X, Y), T) :- swap((X, Y), (Y, X)), T = (Y, X).
我明白了
T = (leaf(4), tree(leaf(1), leaf(2))).
如你所见leaf(1)
,leaf(2)
并没有得到交换.我想要一些提示甚至你的程序,它应该适用于任何深度的节点.谢谢.