ruby – 在多维嵌套数组上调用递归函数的问题

ruby – 在多维嵌套数组上调用递归函数的问题,第1张

概述如果有超过8的话,我试图拆分子阵列.我已经尝试在玩家身上调用rps_tournament_winner函数,如果它的扁平长度大于16但是我得到了“堆栈太深的错误”. 我是否必须参与球员变量或锦标赛?我正朝着正确的方向努力;不完整的解决方案. def rps_tournament_winner(tournament) return rps_game_winner(tournament) if t 如果有超过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
解决方法 我用递归解决了它

class WrongNumberOfPlayersError < StandardError ; endclass NoSuchStrategyError < StandardError ; enddef rps_game_winner(game)  raise WrongNumberOfPlayersError unless game.length == 2  if game[0][0].is_a?(Array) then    winner1 = rps_game_winner(game[0])    winner2 = rps_game_winner(game[1])    game = [winner1,winner2]  end  raise NoSuchStrategyError unless /^(P|R|S){2}$/ =~ game[0][1] + game[1][1]  case game[0][1]    when "R"      if game[1][1] == "P" then        game[1]      else        game[0]      end    when "P"      if game[1][1] == "S" then        game[1]      else         game[0]      end    when "S"      if game[1][1] == "R" then        game[1]      else        game[0]      end  endenddef rps_tournament_winner(tournament)  rps_game_winner(tournament)end
总结

以上是内存溢出为你收集整理的ruby – 在多维嵌套数组上调用递归函数的问题全部内容,希望文章能够帮你解决ruby – 在多维嵌套数组上调用递归函数的问题所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1250194.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-07
下一篇2022-06-07

发表评论

登录后才能评论

评论列表(0条)

    保存