Is this recursion a bad idea and does it make for clean code?
Before explaining why I think recursion might be a bad idea here, let me show you the solution I came up with. 

class Wave8 {

  public static void bounce() {
    String spaces = "";
    for (int i=0; i&lt;80; i++, spaces += " ")
    {
        System.out.println(spaces + "a");
    }
    for (int i=0; i&lt;80; i++, spaces = spaces.substring(1))
    {
        System.out.println(spaces + "a");
    }
  }

  public static void main(String args[]) {
      bounce();
  }
}


The advantage of this solution against the recursive one :


clarity : one can clearly see what was intended.
termination : there is no doubt on the fact that this solution will eventually return
no use of object members : if I call bounce() twice, I expect it to behave the same way twice.
performance : I'd expect this solution to be much faster.


On the other hand, many functions are much better when written in a recursive way. This is the case when it's easy to see that we call the function on a "smaller" problem.