0
我正在玩coffescript中的一些算法,並以一些意想不到的輸出結束。這裏是我的代碼:遞歸函數在結果中生成重複項
traverse = (tree, stack) ->
stack.push tree.node
if not tree.branches
stack
else
traverse branch, stack for branch in tree.branches
one = { node: 1 }
two = { node: 2 }
tree = { node: "+", branches: [one, two] }
console.log traverse one, [] # => [ 1 ]
console.log traverse two, [] # => [ 2 ]
console.log traverse tree, [] # => [ [ '+', 1, 2 ], [ '+', 1, 2 ] ]
我希望得到,而穿越tree
輸出是[ '+', 1, 2 ]
但這被複制。我在這裏錯過簡單的東西嗎?
謝謝。
啊!你確實是對的。 for循環返回一個數組(外部[]),並且該棧是可變的。所以,即使我們第一次返回堆棧,值是[+ 1],它的值第二次被突變爲[+ 1 2]。謝謝。 – j1n3l0 2013-04-06 18:18:48