anchor.diff:  even(3000).result
   ----
   
  -## Comparing performance
  +== Comparing performance
   
   I compared the performance of these solutions with JMH, and these are the results:
   
  
positive.code: :published_at: 2016-07-15
  :hp-tags: scala, recursion, fp
  
  
  image::https://raw.githubusercontent.com/pepite/hubpress.io/gh-pages/images/ordinateur-de-bureau-pc.jpg
  
  Recursion is beautiful. As an example, let's consider this perfectly acceptable example of defining the functions `even` and `odd` in Scala, whose semantics you can guess:
  
  
negative.code: 
  This strategy is sometimes called trampolining, because instead of creating a big stack, we go up to `even`, then down to run, then up to `odd`, then down to run, then up to `even`, down to run, etcetera. The size of our stack keeps growing and shrinking by one frame for every step in the computation. This looks a lot like going up and down on a trampoline :)
  
  == Generalizing
  
  There is no need to specialize our little language to computing `even` and `odd`. We can also make a little language that can express recursion in a general way:
  
  