2016-09-12 3 views
0

Ich schreibe dieses Problem für die Schule und ich denke, ich habe es getan, aber ich würde gerne mehr Augen auf, bevor ich es einschalten. Habe ich es getan korrekt? Ist das ein guter Code? Gibt es einen effizienteren Weg? Wie könnte ich mich verbessern?Wie schreibe ich den Fizzbuzz-Test mit Rekursion in Java

Die Anweisungen lauten wie folgt.

Verwenden RECURSION diese Funktion zu schreiben (oder machen diese Funktion einen Wrapper über eine andere rekursive Funktion)

* 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

Diese Frage wäre besser in [Code Review] (http://codereview.stackexchange.com/) statt StackOverflow gefragt. –

+1

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

Antwort

1

Sie vermissen eine Öffnung { (und eine Schließ }), um Ihre Methode Körper; Sie schreiben nicht an Ihre PrintStream out; und Sie könnten die Modul-Operationen einmal durchführen und das Ergebnis in boolean (s) speichern. Ich glaube, Sie wollten etwas wie,

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

Wie würde der OP-Code sogar kompilieren? –

+0

Gefallen. Duh, kann nicht glauben, dass ich die Zahnspange vermisst habe. Danke, dass Sie meine printstream.out nutzen. Cool! Das Speichern der Ergebnisse in Booleans macht die Dinge in den if/else-Anweisungen definitiv einfacher. Vielen Dank! – BigJ