我试图使用以下两个方法以递归方式遍历数组的数组直到底部,然后返回匹配结果。如何通过Ruby中的数组进行递归
你知道在一场网球比赛中,他们以32场比赛开始,并且一对一对赢家前进,最后只有一个赢家?这就是我想在Ruby中复制的内容。
我创建了一个match_winner
,为了简单起见,它总是返回第一个数组。然后,我将整个锦标赛数组发送到winner
,递归调用它自己,直到找到与单个匹配相对应的简单数组。
def match_winner(array_of_arrays)
return array_of_arrays[0]
end
def winner(tournament)
if tournament[0][0].is_a?(String)
return match_winner(tournament)
else
tournament.each{|e|
winner(e)
}
end
end
tournament = [
[["one", "two"],["three", "four"]],
[["five", "six"],["seven", "eight"]]
]
puts winner(tournament).inspect
,输出:
[[["one", "two"], ["three", "four"]], [["five", "six"], ["seven", "eight"]]]
我尝试不同的排列和变化对这个算法,但我不能让它正常工作并返回只有最后的赢家。
有没有人在这里看到任何明显的错误?
现在我打电话winner
。
你根本不叫'赢家'... – pezcode 2012-03-13 01:14:50
所以['one','two']是一个游戏,'two'是赢家吗? – 2012-03-13 01:16:57
你打电话给#match_winner,你已经硬编码,总是返回第一个值。大概你打算叫'赢家(锦标赛)'。 – 2012-03-13 01:18:07