递归和if-else语句

时间:2017-05-28 13:42:38

标签: java if-statement recursion

我是编程新手。我试图使用递归和if-else语句只打印99啤酒歌词。这是我的代码。如何才能更好地打印好歌词。

方法countdown打印歌词 countdownB应该将数字99中的数字一直打印到零。

public static void countdown(int n) {   
    if (n== 0) {
        System.out.println("no beers");
    } else {
        System.out.println("more beers");
        countdown(n-1);
    }
}

public static void countdownB(int x) {   
    if (x==0){
        System.out.print("");
    } else {
        System.out.print(x);
        countdownB(x-1);
    }
}

public static void main(String[] args) {
    countdownB(3);
    countdown(3);
}

2 个答案:

答案 0 :(得分:2)

您可以将两个countdown方法合并为一个方法。

public static void countdown(int x) {   
    if (x == 0) {
        System.out.println("no beers");
    } else {
        // Print the number first and then the lyric
        System.out.println(x + " more beers");
        countdown(x-1);
    }
}

当你想要打印99个歌词时,你应该调用它。

countdown(99);

答案 1 :(得分:0)

一般来说,递归用于通过关注基本案例以及如何将一般案例简化为基本案例来解决问题。

要使用递归在墙上打印99瓶啤酒,应该确定基本情况。对我来说,这将是一瓶啤酒,因为那时歌词结束时墙上不再有啤酒瓶

为了简化事情,我将无视多元化。然后一般情况是标准歌词。要实现此解决方案,伪代码可能如下所示。

public void song(int n) {
  if (n == 1) {
    singBaseCase();
  } else {
    singGeneralCase(n);
    song(n - 1);
  }
}