2016-09-12 27 views
0

私は学校でこの問題を書いていますが、私はそれをやったと思いますが、私はそれを入れてからもう少し詳しく見ていきたいと思います。正しく?この良いコードですか?それを行うより効率的な方法はありますか?どうすれば改善できますか?Javaで再帰を使用してfizzbuzzテストを書く方法

手順は次のとおりです。 (別の再帰関数のラッパーをまたはこの関数を作る)この関数を記述するために

使用再帰

* this function prints the appropriate FizzBuzz values (feel free to 
* call the provided FizzBuzz function) for values from from to to, 
* including both of those values. Each value should be printed in a separate line. 
* Example: printFizzBuzz(2,6) would print: 
* 2 
* Fizz 
* 4 
* Buzz 
* Fizz 
*/ 

public static void printFizzBuzz(int from, int to, PrintStream out) 
    if(from <= to){ 
     if(from % 3 == 0 && from % 5 == 0){ 
      System.out.println("FizzBuzz"); 
     } else if(from % 3 == 0){ 
      System.out.println("Fizz"); 
     } else if(from % 5 == 0){ 
      System.out.println("Buzz"); 
     } else { 
      System.out.println(from); 
     } 
     printFizzBuzz(++from, to, out); 
    } 
+3

この質問は、StackOverflowではなく[コードレビュー](http://codereview.stackexchange.com/)でお尋ねするのがよいでしょう。 –

+1

http://codereview.stackexchange.com/questions/18820/what-do-you-think-of-my-recursive-fizzbuzz –

答えて

1

あなたのメソッド本体に開口部{(およびクロージング})が欠けています。あなたはあなたのPrintStream outに書いていません。 modulus演算を1回実行して結果をboolean(s)に保存することができます。

public static void printFizzBuzz(int from, int to, PrintStream out) { 
    if (from <= to) { 
     boolean mod3 = ((from % 3) == 0); 
     boolean mod5 = ((from % 5) == 0); 
     if (mod3 && mod5) { 
      out.println("FizzBuzz"); 
     } else if (mod3) { 
      out.println("Fizz"); 
     } else if (mod5) { 
      out.println("Buzz"); 
     } else { 
      out.println(from); 
     } 
     printFizzBuzz(++from, to, out); 
    } 
} 
+0

OPのコードはどのようにコンパイルされますか? –

+0

Gotcha。私は中括弧を見逃したと信じられない。 printstream.outを使用して頂きありがとうございます。クール!ブール値で結果を保存すると、if/elseステートメントで簡単になります。ありがとう! – BigJ

関連する問題