title: Is recursion a feature in and of itself?
body: <p>...or is it just a practice?</p>
  
  <p>I'm asking this because of an argument with my professor: I lost credit for calling a function recursively on the basis that we did not cover recursion in class, and my argument is that we learned it implicitly by learning <code>return</code> and methods.</p>
  
  <p>I'm asking here because I suspect someone has a definitive answer.</p>
  
  <p>For example, what is the difference between the following two methods:</p>
  
  <pre><code>public static void a() {
      return a();
      }
  
  public static void b() {
      return a();
      }
  </code></pre>
  
  <p>Other than "<code>a</code> continues forever" (in the actual program it is used correctly to prompt a user again when provided with invalid input), is there any fundamental difference between <code>a</code> and <code>b</code>? To an un-optimized compiler, how are they handled differently?</p>
  
  <p>Ultimately it comes down to whether by learning to <code>return a()</code> from <code>b</code> that we therefor also learned to <code>return a()</code> from <code>a</code>. Did we?</p>