テール再帰を使用してプロローグ内のツリーを平坦化したい。再帰呼び出しで追加リストを使用してツリーを完成させた。私は私のバージョンを最適化したい。これは再帰呼び出しを使用する私の関数です。私はそれを最適化した末尾呼び出しにしたいです。プロローグツリーを平坦化するためのテールコールの最適化
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]]
誰でも私を助けてくれますか?私はプロローグを初めてお使いですか? TIA
'B = Y'がありません - 少なくとも – false