作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
此递归生成的树不是我想要的,这可能证明我不完全理解递归中列表/元组的行为。如果有人可以解释我在这个例子中做错了什么,并解释正确的思考方式,我将非常感激。
move([],{Main, One, Two}) ->
{Main, One, Two};
move([X|Xr], {Main, One, Two}) ->
[{Main, One, Two}, move(Xr, single(X, {Main, One, Two}))].
期望的结果(一个包含 3 个元组的列表):
[{[a,b],[],[]}, {[a],[b],[]}, {[],[b],[a]}, {[b],[],[a]}]
实际结果(包含元组和列表的列表,包含元组和列表...):
[{[a,b],[],[]},[{[a],[b],[]},[{[],[b],[a]},[{[b],[],[a]}]]]]
最佳答案
您有两个问题:
|
而不是 ,
。move/2
返回一个列表,因此终止子句也必须返回一个列表。这在您的示例中没有看到,因为第一个问题隐藏了它。因此生成的代码将是:
move([X|Xr], {Main, One, Two}) ->
[{Main, One, Two} | move(Xr, single(X, {Main, One, Two}))];
move([], {Main, One, Two}) ->
[{Main, One, Two}].
我翻转了子句的顺序,因为我个人更喜欢这样写。在这种情况下没有根本区别。我假设 single/2
返回一个元组。
您实际上可以通过从 move/2
中删除元组的所有知识来优化此代码,因为它实际上从未使用内部结构。所以:
move([X|Xr], Tuple) ->
[Tuple | move(Xr, single(X, Tuple))];
move([], Tuple) ->
[Tuple].
关于recursion - Erlang - 递归后列表/元组层次结构的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7955211/
我正在尝试将多个水平链接的 Button 和 TextView 垂直链接为 View 集,但仍保持平面 View 层次结构。这是我的初始布局和代码:
到目前为止,我已经在Google BigQuery上训练了几种模型,目前我需要查看模型的外观(即架构,损失函数等)。 有没有办法获取这些信息? 最佳答案 仔细阅读文档后,我可以说该功能尚不存在。我什至
本文实例讲述了PHP实现二叉树深度优先遍历(前序、中序、后序)和广度优先遍历(层次)。分享给大家供大家参考,具体如下: 前言: 深度优先遍历:对每一个可能的分支路径深入到不能再深入为止,而且每个
我是一名优秀的程序员,十分优秀!