2017-05-28 7 views
0

私はプログラミングに慣れています。私はrecursionとif-else文を使って99ビールの歌詞を印刷しようとしています。ここに私のコードです。歌詞をうまく印刷するにはどうすればいいですか?再帰とif-else文

countdownBは数字99から0までの数字を印刷しますが、countdownの方法で歌詞が印刷されます。一般に再帰

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

私はcountdownBメソッドの出力をメソッドカウントダウンの出力の最初の部分に出力する方法を見つけたいと思っています。 –

+0

質問に投稿してください。 –

答えて

0

ベースケースに及び一般的な場合は、ベースケースの方に簡略化することができる方法に焦点を当てたことで問題を解決するために使用されます。

壁にビールのボトル99本を印刷するために再帰を使用するには、基本ケースを特定する必要があります。私にとっては、ビール1本分になります。のビール瓶は壁の上になくなります。

私は事を単純化するために、複数形を無視します。次に、一般的なケースは標準的な歌詞です。このソリューションを実装するために、擬似コードは次のようになります。

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

2つのcountdownメソッドを1つのメソッドにマージできます。

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);