Tree 在指定的深度修剪树。在序言中

Tree 在指定的深度修剪树。在序言中,tree,prolog,binary-tree,trim,depth,Tree,Prolog,Binary Tree,Trim,Depth,参数:任意二叉树;必要的深度;结果树 结果: ?- pred(s(f(b(m,k),a),t(a,g)),2,X). X = s(f,t) yes ?- pred(s(f(b(m,k),a),t(a,g)),3,X). X = s(f(b,a),t(a,g)) yes ?- 有人能帮我吗?让我们重新整理一下你的例子: ?-pred(s(f(b(m,k),a),t(a,g)),3,X)。 X=s(f(b,a),t(a,g))是的 ?-pred(s(f(b(m,k),a),t(a,g)),

参数:任意二叉树;必要的深度;结果树

结果:

?- pred(s(f(b(m,k),a),t(a,g)),2,X). 
X = s(f,t) yes 
?- pred(s(f(b(m,k),a),t(a,g)),3,X). 
X = s(f(b,a),t(a,g)) yes 
?-

有人能帮我吗?

让我们重新整理一下你的例子:

?-pred(s(f(b(m,k),a),t(a,g)),3,X)。
X=s(f(b,a),t(a,g))是的
?-pred(s(f(b(m,k),a),t(a,g)),2,X)。
X=s(f,t)是
?-pred(s(f(b(m,k),a),t(a,g)),1,X)。
是的
?-pred(s(f(b(m,k),a),t(a,g)),0,X)。
不
现在很清楚需要做什么了,不是吗

这个谜题的另一部分是所谓的“univ”谓词

9?-s(f(b(m,k),a),t(a,g))=。。[A,B,C]。
A=s,
B=f(B(m,k),a),
C=t(a,g)。
10?-X=。。[s,f(b(m,k),a),t(a,g)]。
X=s(f(b(m,k),a),t(a,g))。
11?-X=。。[s,f(b,a),t(a,g)]。
X=s(f(b,a),t(a,g))。
12?-X=。。[s,f,t]。
X=s(f,t)。
13?-X=。。[s] 。
X=s。
14?-s=。。十,。
X=[s]。
这就是如何分解数据并重新构建数据的方法

最后,您需要使用递归:

递归(输入、输出):-
基本关系(输入、输出)。
递归(输入、输出):-
成分(In、自相似部分、残留物),
映射列表(递归、自相似部分、InterimResults),
成分(外、中间、剩余)。

请在此显示一些努力。如果你根本不懂序言,那就去读一本好的教程或教科书。仅仅说明一个问题,并期望有人绞死你一个完整的,有效的答案不是这个网站的目的。