落ち着かないのでFizzBuzz書いた

コピペプログラミングでごめんなさい・・・
数値も出力できてないし・・・
FizzBuzzもエレガントに書けないなんて・・・

package javaapplication1;
public class FizzBuzzEx {
    public static void main(String[] args) {
        new FizzBuzzEx().n(1);
    }
    public 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);
            }
        }
    }
    
    public void fizz(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);
            }
        }
    }
    public void buzz(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);
            }
        }
    }
    public void fizzbuzz(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);
            }
        }
    }
}


結果

Exception in thread "main" java.lang.StackOverflowError
	at javaapplication1.FizzBuzzEx.n(FizzBuzzEx.java:20)
	at javaapplication1.FizzBuzzEx.fizz(FizzBuzzEx.java:46)
	at javaapplication1.FizzBuzzEx.buzz(FizzBuzzEx.java:55)
	at javaapplication1.FizzBuzzEx.n(FizzBuzzEx.java:28)
	at javaapplication1.FizzBuzzEx.fizz(FizzBuzzEx.java:46)
	at javaapplication1.FizzBuzzEx.n(FizzBuzzEx.java:24)
	at javaapplication1.FizzBuzzEx.n(FizzBuzzEx.java:30)
	at javaapplication1.FizzBuzzEx.fizzbuzz(FizzBuzzEx.java:76)
	at javaapplication1.FizzBuzzEx.n(FizzBuzzEx.java:22)
	at javaapplication1.FizzBuzzEx.n(FizzBuzzEx.java:30)
	at javaapplication1.FizzBuzzEx.fizz(FizzBuzzEx.java:46)
	at javaapplication1.FizzBuzzEx.n(FizzBuzzEx.java:24)
	at javaapplication1.FizzBuzzEx.buzz(FizzBuzzEx.java:61)
	at javaapplication1.FizzBuzzEx.fizz(FizzBuzzEx.java:44)
	at javaapplication1.FizzBuzzEx.n(FizzBuzzEx.java:24)
	at javaapplication1.FizzBuzzEx.n(FizzBuzzEx.java:30)
	at javaapplication1.FizzBuzzEx.fizz(FizzBuzzEx.java:46)
	at javaapplication1.FizzBuzzEx.buzz(FizzBuzzEx.java:55)
	at javaapplication1.FizzBuzzEx.n(FizzBuzzEx.java:28)
	at javaapplication1.FizzBuzzEx.fizz(FizzBuzzEx.java:46)
	at javaapplication1.FizzBuzzEx.n(FizzBuzzEx.java:24)
	at javaapplication1.FizzBuzzEx.n(FizzBuzzEx.java:30)
	at javaapplication1.FizzBuzzEx.fizzbuzz(FizzBuzzEx.java:76)
	at javaapplication1.FizzBuzzEx.n(FizzBuzzEx.java:22)
	at javaapplication1.FizzBuzzEx.n(FizzBuzzEx.java:30)
	at javaapplication1.FizzBuzzEx.fizz(FizzBuzzEx.java:46)
	at javaapplication1.FizzBuzzEx.n(FizzBuzzEx.java:24)
(略)