固定:见编辑编辑
我在为 n 叉树编写自己的递归时遇到了麻烦。@element
是节点的值,并且@children
是所有连接的较低节点的数组。这是我的方法:
def each
yield(@element)
@children.each { |x|
x.each { |i| yield i}
}
self
end
问题是它重复了较低的元素。例如,如果我使用它来打印一个值为 o 和一个子 c 的节点,它将打印 'occ' 而不是 'oc'。我真的不知道发生了什么,所以我所有尝试的修复都无效。有任何想法吗?
编辑:我认为这可能是因为除了产生它之外,它还以某种方式调用节点值上的每个,所以当它是单个字符的字符串时,它将产生该字符,然后通过.each
调用再次产生它。
编辑编辑:感谢大家阅读,但我搞砸了。问题不在于此方法,而在于同一类中的另一个 to_s。to_s 将正确打印,但如果它是一个字符串,则更改父节点的值。每当我测试时,我总是先使用to_s,甚至没有意识到。为此表示歉意。(不能让我回答我自己的问题,因为我是新手)。