【发布时间】:2017-11-28 10:11:53
【问题描述】:
所以我的任务是递归地反转多维数组。 我似乎无法弄清楚如何。
我编写的代码可以反转多维数组,但它不是递归的。 你们能帮我让它递归吗?
最后应该是这样的:
ary = [1,[1,22,[5,7,0],8],2,3]
reverse_rek(ary)
#=> [3, 2, [1, 22, [5, 7, 0], 8], 1]
这是我的尝试:
def reverse_rek(ary)
if not ary.is_a?(Array)
raise ArgumentError, "Dies ist kein Array"
end
reverse_rek_intern(ary)
end
def reverse_rek_intern(ary)
len = ary.length-1
reverse_ary =[]
ary.each_index { |index|
reverse_ary[index] = ary[len-index]
}
return reverse_ary
end
谢谢!
【问题讨论】:
-
这看起来像是一个单维数组。尝试让你的问题更小 - 看看你在循环中拥有什么 - 在
index=0之后,你可以反转第一个和最后一个索引(你现在需要实际交换),现在你需要反转更小的东西,从index=1开始的数组。还要考虑何时停止。 -
不,抱歉,我没有说得很清楚。我应该只交换“最顶层”的数组。就像在示例中一样
-
我不明白为什么不只是
ary.reverse。我错过了什么吗?为什么方法应该是递归的?
标签: ruby recursion multidimensional-array