如果超過8個,我試圖分割子數組。我曾嘗試在播放器上調用rps_tournament_winner函數,如果它的扁平長度超過16但我得到一個「堆棧太深的錯誤」。在多維嵌套數組上調用遞歸函數的問題
我必須參加球員變數或錦標賽嗎?我正在尋找正確的方向;不是完整的解決方案。
def rps_tournament_winner(tournament)
return rps_game_winner(tournament) if tournament.flatten.length == 4
players = tournament.flatten(2)
while players.length > 1
players = players.each_slice(2).map { |x| rps_game_winner(x) }
end
players[0]
end
看起來像你遞歸調用函數而不修改參數之前這樣做。這會導致無限循環。您需要首先以某種方式減少參數「比賽」。 – Madbreaks 2012-03-01 20:21:30
因此,如果我檢查長度,如果它超過一定的長度,我可以將它分成兩個較小的數組,並在每個數組上調用比賽功能? – 2012-03-01 20:27:36
Got it排序,謝謝。能夠調整If語句並使其完美運行。謝謝您的幫助! – 2012-03-03 07:38:53