【发布时间】:2016-11-28 17:19:32
【问题描述】:
我想使用尾递归在序言中展平一棵树。我已经使用带有递归调用的附加列表来完成它。我想优化我的版本。这是我使用递归调用的函数。我想让它优化尾调用。
fl_t(lf(A),[A]).
fl_t(tr(A,B,C),S4):- fl_t(A,X1),fl_t(C,X2),append(X2,[Y],X3),append(X3,X1,S4).
Input : fl_t(lf(a),Result)
Output : Result=[a]
Input : fl_t(tr(lf([1, 2]), 3, leaf([4, 5])),Result)
Output : Result = [[1,2],3,[4,5]]
谁能帮帮我。我是prolog的新手。 TIA
【问题讨论】:
-
缺少
B = Y- 至少
标签: prolog tail-recursion tail-call-optimization