ほぼ10年前にFizzBuzzを書いていた。
落ち着かないのでFizzBuzz書いた - きしだのHatena
当時としてはがんばったほうなのだけど、改めてみると改善ポイントがみつかった。
よりコンパクトになった。やはりコピペコードいくない。
あと、オブジェクト指向など実業務では使いものにならない!newなんてムダだってことで、全部staticメソッドにした。
あいかわらず数値は出せてないけども。
package kis.sample; public class FizzBuzz { public static void main(String[] args) { n(0); } static void n(int i){ if(i % 3 == 0){ if(i % 5 == 0){ fizzbuzz(i + 1); }else{ fizz(i + 1); } }else{ if(i % 5 == 0){ buzz(i + 1); }else{ n(i + 1); } } } static void fizz(int i){ // fizzの直後にfizzが来ることはない if(i % 5 == 0){ buzz(i + 1); }else{ n(i + 1); } } static void buzz(int i){ // buzzの直後にbuzzが来ることはない if(i % 3 == 0){ fizz(i + 1); }else{ n(i + 1); } } static void fizzbuzz(int i){ // fizzbuzzの直後はnのみ n(i + 1); } }
結果
Exception in thread "main" java.lang.StackOverflowError at kis.sample.FizzBuzz.fizz(FizzBuzz.java:28) at kis.sample.FizzBuzz.buzz(FizzBuzz.java:34) at kis.sample.FizzBuzz.n(FizzBuzz.java:16) at kis.sample.FizzBuzz.fizz(FizzBuzz.java:28) at kis.sample.FizzBuzz.n(FizzBuzz.java:12) at kis.sample.FizzBuzz.n(FizzBuzz.java:18) at kis.sample.FizzBuzz.fizzbuzz(FizzBuzz.java:41) at kis.sample.FizzBuzz.n(FizzBuzz.java:10) at kis.sample.FizzBuzz.n(FizzBuzz.java:18) at kis.sample.FizzBuzz.fizz(FizzBuzz.java:28) at kis.sample.FizzBuzz.n(FizzBuzz.java:12) at kis.sample.FizzBuzz.buzz(FizzBuzz.java:36) at kis.sample.FizzBuzz.fizz(FizzBuzz.java:26) at kis.sample.FizzBuzz.n(FizzBuzz.java:12) at kis.sample.FizzBuzz.n(FizzBuzz.java:18) at kis.sample.FizzBuzz.fizz(FizzBuzz.java:28) at kis.sample.FizzBuzz.buzz(FizzBuzz.java:34) at kis.sample.FizzBuzz.n(FizzBuzz.java:16) at kis.sample.FizzBuzz.fizz(FizzBuzz.java:28) at kis.sample.FizzBuzz.n(FizzBuzz.java:12) at kis.sample.FizzBuzz.n(FizzBuzz.java:18) at kis.sample.FizzBuzz.fizzbuzz(FizzBuzz.java:41) at kis.sample.FizzBuzz.n(FizzBuzz.java:10) at kis.sample.FizzBuzz.n(FizzBuzz.java:18) at kis.sample.FizzBuzz.fizz(FizzBuzz.java:28) at kis.sample.FizzBuzz.n(FizzBuzz.java:12) at kis.sample.FizzBuzz.buzz(FizzBuzz.java:36) at kis.sample.FizzBuzz.fizz(FizzBuzz.java:26) at kis.sample.FizzBuzz.n(FizzBuzz.java:12) ...