gpt4 book ai didi

ruby - Ruby 中的递归。我这样做正确吗?

转载 作者:太空宇宙 更新时间:2023-11-03 16:34:20 26 4
gpt4 key购买 nike

我只是在学习 Ruby 和一般编程。我的第一个项目是 21 点程序。我有一个方法 start_game 被调用来开始每一手新手。该方法被调用,然后在手牌结束时再次调用自身。这是正确的方法吗?在我看来,每次调用该方法时它都会无休止地分配内存。我不确定这是否是垃圾收集会处理的事情。我觉得可能有更好的方法可以做到这一点,但无法弄清楚。提前致谢!

最佳答案

像这样递归调用方法最终会导致堆栈溢出(如果玩了足够多的手,不确定这种可能性有多大)。

除非尾调用优化阻止这种情况发生。这是一种优化形式,可应用于递归方法调用,其中递归调用始终是方法运行中的最后一个调用。这基本上将递归调用转换为循环,因此您不会每次都添加到堆栈中。

然而,根据这个question你不能依赖 Ruby 中的尾调用优化。所以我会稍微重写你的代码,以便在循环中调用 start_game 来测试一些条件来决定它是否应该继续。

关于ruby - Ruby 中的递归。我这样做正确吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10188008/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com