Prolog - 计算树中叶子的数量
例如,如果我有一棵树,如下所示:
tree3(b(l(1),b(l(2),l(3)))).
我将如何编写一个计算叶子数量的程序? 我希望它在使用时看起来像这样:
?- tree3(T), count_leaves(T, N).
N = 3,
T = b(l(1),b(l(2),l(3)))
我希望得到任何帮助!
If I have a tree that for example looks like this:
tree3(b(l(1),b(l(2),l(3)))).
How would I write a program that counts the number of leaves?
I want it to look something like this when it's been used:
?- tree3(T), count_leaves(T, N).
N = 3,
T = b(l(1),b(l(2),l(3)))
I'd love any help!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
你可以这样做:
基本上,只有一片叶子的树只有一片叶子。如果树以一个分支开始,则递归到两个分支并将结果相加。
您的解决方案给您
no
,因为没有任何内容与empty
匹配。即使你解决了这个问题,你也不会计算叶子,而是计算内部节点。You could do it like this:
Basically, tree that is just a leaf has one leaf. If the tree starts with a branch, recurse into both branches and add the results.
Your solution gives you
no
, because nothing will match againstempty
. And even if you fixed that, you wouldn't be counting leaves, but inner nodes.