我的目标是有这个输入:
L = [a,b,c], build_tree(L,T).
有了这个输出:
L = [1,30,kth,5],
T = b(l(a),b(l(b),b(l(c)))) ?
yes
使用这段代码,计算一棵树的叶子数量:
leaves(l(X), [X]).
leaves(b(L1,L2),V):-
leaves(L1,V1),
leaves(L2,V2),
append(V1,V2,V).
我可以通过简单地给函数一个列表而不是树作为输入来获得所需的输出,例如:
L = [a,b,c], leaves(T,L).
这里唯一的问题是它以错误的顺序获取参数(即 build_tree(T,L) 而不是 build_tree(L,T))。
那么,我怎样才能产生相同的结果,而只是交换输入参数呢?我已经尝试了每一个“明显”的解决方案(交换变量),但我猜它可能不像看起来那么容易,因为它是一种递归方法。