我试图将歌词打印到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/