使用此递归功能运行此功能

时间:2015-08-14 11:44:28

标签: ruby recursion

我在运行此代码时遇到问题 它假设返回这个数组的扁平版本 请帮忙

def flatten(array)
    array.each do |i|
        if i.is_a? Array
            flatten(i)
        else
            @@new_array << i
        end
    end
    return @@new_array
end

flatten([1,2,3,[4,5,[6]]])

2 个答案:

答案 0 :(得分:1)

问题在于您尝试将@@new_array用作一种全局变量,但您从未初始化它。使用当前代码,为了使方法起作用,每次调用方法之前都需要重置@@new_array

@@new_array = []
flatten([1,2,3,[4,5,[6]]]) # => [1, 2, 3, 4, 5, 6]

然而,这个实施在很多层面都是可怕的(请不要冒犯)。如果您尝试自己实施Array#flatten方法,我会建议the implementation来自几天前提出同样问题的问题。

答案 1 :(得分:0)

您是否尝试过阵列扁平化方法?

[1,2,3,[4,5,[6]]].flatten

或者您需要实现自己的方法