我试图将歌词打印到99瓶啤酒上,但是在第一节经文中,我得到了无限递归。关于如何摆脱这种无限递归的任何想法?

    public static void bottlesOfBeer(int beer) { //prints the lyrics for "99 bottles of Beer on the wall".
        if (beer == 99) {
            for (beer = 99; beer > 0; bottlesOfBeer(beer - 1)) {
                System.out.println(beer
                    + " bottles of Beer on the wall!"
                    + beer + " bottles of Beer!"
                    + " Take one down, pass it around, "
                    + minusOneBeer(beer) + " bottles of beer on the wall!");
            }
        }
    }

    public static int minusOneBeer(int beer) {
        return beer - 1;
    }
}

最佳答案

您的问题并不是真正的递归方法。通常将执行递归而不是循环。您有一个奇怪的递归和迭代混搭。

如果您的要求是通过递归解决问题,那么请弄清楚如何在没有任何循环构造的情况下解决问题(不,我不会为您做功课)。实际上,您已经拥有了所需的大部分东西。

关于java - 无限递归99瓶啤酒,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29354126/

10-10 08:14