【发布时间】:2012-04-11 12:37:04
【问题描述】:
我在另一篇文章中尝试了某人关于如何将树更改为列表的评论的建议。但是,我在某处(或某处)有一个未声明的变量,所以我的列表中的值是 [_G667, _G673, _G679],而不是 [5, 2, 6],这是正确的答案。据我所知,所有的操作都是正确的。
代码如下:
flatten( Item , []).
flatten( tree(Left, Val, Right), List) :-
flatten(Left, List1),
append(List1, [E], List2),
flatten(Right, List3),
append(List2, List3, List).
我使用的查询是:
?- flatten(tree(tree(nil, 2, nil), 5, tree(nil, 6, nil)), L).
有人看到变量问题吗?我以为它可能在第一行(带有 Item),但是如果我将 Item 更改为 item,查询会立即返回 false。
我只写了几个 Prolog 程序,所以这对我来说还是一个新概念。
【问题讨论】: